为什么#字符在Perl中被视为"单词"字符?或者我误解了这段代码应该如何工作?
#!/usr/bin/perl
my $filename = "Something_with_#_sign.jpg";
$filename =~ s/ # substitute...
[^ # characters which are NOT:
\w # "word" characters
] # end of character classes
/_/xg; # ...with an underscore
print "$filename\n";
Run Code Online (Sandbox Code Playgroud)
产量:
Something_with_#_sign.jpg
Run Code Online (Sandbox Code Playgroud)
我原以为#符号已被_(下划线)取代.
ike*_*ami 10
/x不修改字符类的语法(或\x20,或s{3,4},等,等),所以
[^ # characters which are NOT:
\w # "word" characters
] # end of character classes
Run Code Online (Sandbox Code Playgroud)
是一种奇怪的写作方式
[^ "#:NOTacdefhilnorst\n\w]
Run Code Online (Sandbox Code Playgroud)