Del libro Modern Perl:
The given construct is a feature new to Perl 5.10. It assigns the value of an expression to the topic variable and introduces a block:
given ($name) {
...
}
Unlike for, it does not iterate over an aggregate. It evaluates its value in scalar context, and always assigns to the topic variable:
given (my $username = find_user())
given also makes the topic variable lexical to prevent accidental modification:
lhp@nereida:~/Lperl/src/perltesting$ cat -n given.pl
1 #!/usr/bin/env perl
2 use Modern::Perl;
3
4 given ('mouse') {
5 say;
6 mouse_to_man( $_ );
7 say;
8 }
9
10 sub mouse_to_man {
11 $_ = shift;
12 s/mouse/man/;
13 say "Inside mouse_to_man: $_";
14 }
lhp@nereida:~/Lperl/src/perltesting$ ./given.pl
mouse
Inside mouse_to_man: man
mouse
given is most useful when combined withwhen.giventopicalizes a value within a block so that multiple when statements can match the topic against expressions using smart-match semantics.
Casiano Rodríguez León
