В значительной степени:
print "foo\n" if ($foo eq $bar);
является ярлыком для
if ($foo eq $bar) {
print "foo\n";
}
И я редко использую предыдущий, потому что во втором примере выражение if
более очевидно, чем в первом примере. Единственный раз, когда я использовал постфикс if
, это что-то вроде этого:
next if ($line =~ /^\s*$/);
Обычно этого достаточно, чтобы поймать.
Возможно, вы захотите попробовать:
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (\@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}
что, я думаю, вы действительно ищете. Кстати, у меня были проблемы с Switch
, и он не работает с старых версий Perl (до Perl 5.8).