Это зависит от того, что вы пытаетесь сделать. Правильный способ делать вещи - инициализировать переменные, когда они объявлены; Однако, Perl is not C
, поэтому один из следующих может быть то, что вы хотите:
1) $var = "foo" unless defined $var; # set default after the fact
2) $var = defined $var? $var : {...}; # ternary operation
3) {...} if !(defined $var); # another way to write 1)
4) $var = $var || "foo"; # set to $var unless it's falsy, in which case set to 'foo'
5) $var ||= "foo"; # retain value of $var unless it's falsy, in which case set to 'foo' (same as previous line)
6) $var = $var // "foo"; # set to $var unless it's undefined, in which case set to 'foo'
7) $var //= "foo"; # 5.10+ ; retain value of $var unless it's undefined, in which case set to 'foo' (same as previous line)
C способ делать вещи (не рекомендуется):
# initialize the variable to a default value during declaration
# then test against that value when you want to see if it's been changed
my $var = "foo";
{...}
if ($var eq "foo"){
... # do something
} else {
... # do something else
}
Другой многословно способ сделать это создание класса и флага при изменении переменной, что не является необходимым.
Какая проблема вы пытаетесь решить? –
Проверка 'undef' - лучший способ проверить, была ли инициализирована переменная или нет; однако это не завершит ваш тест инициализации, если переменная будет установлена в 'undef' в любое время после инициализации, как указано ниже. – vol7ron