В подпрограмме массив @_
предоставляет аргументы, переданные данной подпрограмме.Например:
use strict;
use warnings;
sub print_em
{
foreach my $arg (@_)
{
print "You passed in $arg.\n";
}
}
print_em("foo","bar","baz");
Выходные данные
You passed in foo.
You passed in bar.
You passed in baz.
Скаляр $_
обычно используется в качестве переменной в цикле.Например:
use strict;
use warnings;
# Note that we are not declaring a variable
# that takes on the values 1 through 5.
foreach(1..5)
{
print "$_\n";
}
Вывод:
1
2
3
4
5
Аналогично, мы могли бы слегка переписать подпрограмму print_em
выше как
sub print_em
{
foreach(@_)
{
print "You passed in $_.\n";
}
}
или дажекак более компактный
sub print_em{ print "You passed in $_.\n" foreach(@_);}
Переменная $_
также может использоваться в качестве «аргумента по умолчанию» для определенных функций.Например:
use strict;
use warnings;
$_="foobar";
if(/bar/) #We do not have to write $_=~/bar/
{
print "matched!\n";
}
, который, конечно, выводит matched!
.
. Посмотрите на perldoc perlvar
для получения дополнительной информации об этих и других Perl "магические переменные ".