Если вы напишите Perl с use strict;
, вы обнаружите, что однострочный синтаксис недействителен, даже если объявлен.
С:
my ($newstring = $oldstring) =~ s/foo/bar/;
Вы получаете:
Can't declare scalar assignment in "my" at script.pl line 7, near ") =~"
Execution of script.pl aborted due to compilation errors.
Вместо этого используемый вами синтаксис, в то время как строка длиннее, является синтаксически правильным способом сделать это с use strict;
. Для меня использование use strict;
- это просто привычка. Я делаю это автоматически. Все должны.
#!/usr/bin/env perl -wT
use strict;
my $oldstring = "foo one foo two foo three";
my $newstring = $oldstring;
$newstring =~ s/foo/bar/g;
print "$oldstring","\n";
print "$newstring","\n";