my $port_string;
if (defined($self->{port_range})) {
$port_string = $self->{port_range};
} else {
$port_string = "whatever2";
}
Run Code Online (Sandbox Code Playgroud)
如果已定义,我想分配一个变量值,如果第一个值是undef,我想分配另一个值.
在Perl中有一种单行方式吗?或者至少比我在那里更简单?
在Perl 5.10及更高版本中,您可以使用defined-or运算符:
my $port_string = $self->{port_range} // "whatever2";
Run Code Online (Sandbox Code Playgroud)
您可以使用条件运算符使此语句更简洁:
my $port_string = defined $self->{port_range} ? $self->{port_range} :
"whatever2";
Run Code Online (Sandbox Code Playgroud)
您还可以使用defined-or:
my $port_string = $self->{port_range} // "whatever2";
Run Code Online (Sandbox Code Playgroud)
或逻辑 - 或:
my $port_string = $self->{port_range} || "whatever2";
Run Code Online (Sandbox Code Playgroud)
定义 - 或者可能是最简洁的.
注意:正如@ikegami在下面提到的那样,逻辑或案例将进行替换,如果$self->{port_range}是0或""因为这些值是假的.