Ник*_*шин 1 perl initialization
$ 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.
Run Code Online (Sandbox Code Playgroud)
我看到
我决定了
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";
}
Run Code Online (Sandbox Code Playgroud)
我决定这个问题,但我想知道这个问题如何在其他人身上解决
Axe*_*man 10
加入一组无条件定义的对象的最常用方法是删除值 grep
join '', grep { defined; } @_;
Run Code Online (Sandbox Code Playgroud)
但是,您需要为每个值定义或不定义指标.
sub make_string { join( ',', map { $_ || '' } @_ ); }
Run Code Online (Sandbox Code Playgroud)
但这是你可以做的另一件事.
my $str
= do { no warnings 'uninitialized';
join( ',' @_ );
};
Run Code Online (Sandbox Code Playgroud)
有些人对关闭警告有不必要的保留意见.
| 归档时间: |
|
| 查看次数: |
17968 次 |
| 最近记录: |