sid*_*com 0 perl warnings initialization substitution
为什么Perl会在这种情况下发出警告
Use of uninitialized value `$new` in substitution (s///) at ./perl.pl line 8.
Run Code Online (Sandbox Code Playgroud)
并不是
Use of uninitialized value `$string` in substitution (s///) at ./perl.pl line 8.
#!/usr/bin/env perl
use warnings;
use strict;
my $string;
my $new;
( $new = $string ) =~ s/^.//;
Run Code Online (Sandbox Code Playgroud)
$string
没有参与替换.它位于赋值的RHS上,并且在赋值的RHS上具有未定义的值不应触发警告.
如果$new
没有定义,你可以使用
my $new = $string;
$new =~ s/^.// if defined($new);
Run Code Online (Sandbox Code Playgroud)