Perl не имеет собственного логического типа, но вы можете использовать сравнение целых чисел или строк, чтобы получить то же поведение. Пример Алана - хороший способ сделать это, используя сравнение целых чисел. Вот пример
my $boolean = 0;
if ( $boolean ) {
print "$boolean evaluates to true\n";
} else {
print "$boolean evaluates to false\n";
}
Одна вещь, которую я сделал в некоторых из моих программ, - добавление того же поведения с использованием константы:
#!/usr/bin/perl
use strict;
use warnings;
use constant false => 0;
use constant true => 1;
my $val1 = true;
my $val2 = false;
print $val1, " && ", $val2;
if ( $val1 && $val2 ) {
print " evaluates to true.\n";
} else {
print " evaluates to false.\n";
}
print $val1, " || ", $val2;
if ( $val1 || $val2 ) {
print " evaluates to true.\n";
} else {
print " evaluates to false.\n";
}
Строки, помеченные как «константа использования», определяют константу с именем true, которая всегда оценивается как 1, и константу с именем false, которая всегда оценивается как 0. Из-за способа определения констант в Perl следующие строки кода не выполняются а также:
true = 0;
true = false;
В сообщении об ошибке должно быть что-то вроде «Не удается изменить константу в скалярном присваивании».
Я видел это в одном из ваших комментариев о сравнении строк. Вы должны знать, что поскольку Perl комбинирует строки и числовые типы в скалярных переменных, у вас есть другой синтаксис для сравнения строк и чисел:
my $var1 = "5.0";
my $var2 = "5";
print "using operator eq\n";
if ( $var1 eq $var2 ) {
print "$var1 and $var2 are equal!\n";
} else {
print "$var1 and $var2 are not equal!\n";
}
print "using operator ==\n";
if ( $var1 == $var2 ) {
print "$var1 and $var2 are equal!\n";
} else {
print "$var1 and $var2 are not equal!\n";
}
Разница между этими операторами является очень распространенным источником путаницы в Perl.