0

この場合、なぜ Perl は警告を発するのか

Use of uninitialized value `$new` in substitution (s///) at ./perl.pl line 8.

そしてそうではない

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/^.//;
4

2 に答える 2

7

$string置換には関与しません。これは割り当ての RHS にあり、割り当ての RHS に未定義の値があっても、警告は発生しません。

が未定義であっ$newても問題ない場合は、次を使用できます

my $new = $string;
$new =~ s/^.// if defined($new);
于 2012-12-25T11:19:29.877 に答える
3

に代わる$stringものはないので、警告しません。このコードは、 undef値を から$stringにコピーし$new、 に置換し$newます。

この警告を削除したい場合は、次のように変更できます。

( $new = ($string // '') ) =~ s/^.//;
于 2012-12-25T11:07:43.737 に答える