根据定义分配两个可能值中的变量之一的最佳方法?

Tak*_*kun 0 perl

    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中有一种单行方式吗?或者至少比我在那里更简单?

Thi*_*Not 8

在Perl 5.10及更高版本中,您可以使用defined-or运算符:

my $port_string = $self->{port_range} // "whatever2";
Run Code Online (Sandbox Code Playgroud)


Hun*_*len 8

您可以使用条件运算符使此语句更简洁:

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""因为这些值是假的.