Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В perl'е есть более страшные грабли.
perl -e 'map { $_ => 1 } @ARGV'
perl -e 'map { "$_" => 1 } @ARGV'
вторая из них с точки зрения perl имеет синтаксическую ошибку на всех версиях интерпретатора, которые сейчас под рукой.
echo "$_" test
добавил фразу «Я не ставлю цель...»
Я не оставлю цель очернить Перл
#!/usr/bin/perl $\ = "\n"; my $x = ('a', 'b', 'c'); print "x = $x"; my $x = @{['a', 'b', 'c']}; print "x = $x"; my $x = (@{['a', 'b', 'c']}); print "x = $x";
my $x = ('a', 'b', 'c'); # списковый контекст, то есть _работа в контексте_ списка
my $x = @{['a', 'b', 'c']}; # разыменовывание ссылки на _массив_
#!/usr/bin/perl
$\ = "\n";
my @a = ('a', 'b', 'c'); # создали массив
my $x = @a; # работаем с массивом
print "x = $x";
my $x = @{['a', 'b', 'c']}; # разыменовываем ссылку на анонимный массив
# и работаем с как с обычным массивом
print "x = $x";
x = 3
x = 3
$x = (1,2,3)
работает не «список в скалярном контексте», а оператор "," в скалярном контексте:Binary "," is the comma operator. In scalar context it evaluates its left argument, throws that value away, then evaluates its right argument and returns that value. This is just like C's comma operator.
Я просто оставлю это здесь