gpt4 book ai didi

perl - 如何避免在连接 (.) 中使用未初始化的值?在 perl v5.8.4

转载 作者:行者123 更新时间:2023-12-03 23:06:04 25 4
gpt4 key购买 nike

很难说出这里问的是什么。这个问题是模棱两可的、含糊的、不完整的、过于宽泛或修辞的,不能以其目前的形式得到合理的回答。如需帮助澄清此问题以便可以重新打开,visit the help center .




10 年前关闭。



$ perl -e 'use warnings;my ($a,$b);$c=$a.$b;print $c'
Use of uninitialized value in concatenation (.) or string at -e line 1.
Use of uninitialized value in concatenation (.) or string at -e line 1.

我看到

我决定了
use 5.8.4;
use strict;
use warnings;
use Test::More tests => 2;
my ( $start, $end, $sysid, $ver, $tradetype );
( $start, $end ) = ( 1, 10 );
my $test = make_string( $start, $end, $sysid, $ver, $tradetype );
is( $test, "1,10,,,\n", "make index string" );
is( make_string( 0, 0, 0, 0, 0, ), "0,0,0,0,0\n", "test number" );

sub make_string {
my @input = @_;
my @input_init = map { !defined $_ ? '' : $_ } @input;
my $rezult = join q{,}, @input_init;
return $rezult . "\n";
}

我决定了这个问题,但我想知道如何在其他人身上解决这个问题

最佳答案

加入一组无条件定义的对象的最常见方法是通过 grep 删除值。

join '', grep { defined; } @_;

但是,您希望每个值都有一个指标,无论是否定义。
sub make_string { join( ',', map { $_ || '' } @_ ); }

但这是您可以做的另一件事。
my $str
= do { no warnings 'uninitialized';
join( ',' @_ );
};

有些人对关闭警告有不必要的保留。

关于perl - 如何避免在连接 (.) 中使用未初始化的值?在 perl v5.8.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com