Depende de lo que trates de hacer. La forma correcta de hacer las cosas C
es inicializar las variables cuando se declaran; Sin embargo, Perl is not C
, así que uno de los siguientes puede ser lo que quiere:
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 manera de hacer las cosas (no se recomienda):
# 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
}
Otra manera de largo aliento de hacer esto es para crear una clase y una bandera cuando la variable ha sido cambiada, lo cual es innecesario.
¿Qué problema estás tratando de resolver? –
Comprobar 'undef' es la mejor manera de ver si una variable se ha inicializado o no; sin embargo, esto no pasaría la prueba de inicialización si la variable se establece en 'undef' en cualquier momento después de ser inicializada, como se indica a continuación. – vol7ron