Я знаю, что это возможно, но я терплю неудачу на синтаксисе. Как дела что-то подобное следующему как условное выражение. 5.8, таким образом, никакая опция переключателя:
while ( calculate_result() != 1 ) {
my $result = calculate_result();
print "Result is $result\n";
}
И просто что-то подобное:
while ( my $result = calculate_result() != 1 ) {
print "Result is $result\n";
}
Вам нужно добавить круглые скобки, чтобы указать приоритет как ! =
имеет более высокий приоритет, чем =
:
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}
kemp дает правильный ответ о приоритете. Я бы просто добавил, что выполнение сложных выражений, включающих как присваивания, так и сравнения в условии цикла, может очень быстро сделать код некрасивым и нечитаемым.
Я бы написал это так:
while ( my $result = calculate_result() ) {
last if $result == 1;
print "Result is $result\n";
}
Что не так с:
$_ = 1;
sub foo {
return $_++;
}
while ( ( my $t = foo() ) < 5 )
{
print $t;
}
приводит к 1234
Вы были близки ...
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}