Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
mysub(@$x && $x->[0] =~ /abc/, $x = []);
mysub($x->[0] =~ /abc/, $x = []);
mysub($x && $x->[0] =~ /abc/ || undef, $x = []);
use strict;
use warnings;
sub mysub
{
my ($a, $b) = @_;
print "a: $a\n";
print "b: $b\n";
}
my $x = [];
mysub( ($x && ($x->[0] =~ /abc/i)), "some text $x->[0]" );
a: some text
b:
use strict;
use warnings;
sub mysub($$)
{
my ($a, $b) = @_;
print "a: $a\n";
print "b: $b\n";
}
my $x = [];
mysub( ($x && ($x->[0] =~ /abc/i)), "some text $x->[0]" );
a:
b: some text
в Perl (как и во многих других языках) X && Y, в случае если X — false, возвратит не просто false (не выполняя Y), а возвратит сам X
ruby -e 'puts false && 3'
false
ruby -e 'puts nil && 3'
ruby -e 'puts false || "Hello"'
Hello
php -r 'var_dump(false || "Hello");'
bool(true)
x = yy || zz
x = (yy?:zz)
sub a
{
my ($b,$c) = @_;
}
use strict;
use warnings;
sub a
{
$_[0] = 3;
}
my $x = 0;
my $y = 5;
a($x && $y);
print "$x\n";
ok( ($errors && ($errors->[0] =~ /My Exception/i)), "should catch exception $errors->[0]" );
Ещё один способ отстрелить себе ногу в Perl