我正在尝试将Perl脚本解析为Python.我接下来没有Perl的经验,但它仍然非常顺利.Perl文档庞大而令人印象深刻.但是,有时会有一些非常神秘的语法,我真的无法弄清楚,而且我不能与脚本的作者沟通.以下让我头疼了很长一段时间了:
sub someSubroutine
{
my ($var1, $var2, $var3) = @_;
# some Perl code
$var2 =~ s|/|\\|g;
# and then some more code ..
}
Run Code Online (Sandbox Code Playgroud)
我真的没有得到这一个特别和孤独的路线
$dst =~ s|/|\\|g;
Run Code Online (Sandbox Code Playgroud)
我很清楚它$var2使用一些二进制OR操作进行搜索/字符串匹配,但结果未存储.
我想知道它是否有任何不那么明显的副作用,例如是否自动存储$_?
根据我的阅读,默认变量是在调用子程序,启动循环或类似程序时自动设置的,但在使用运算符时没有任何内容.
我真的很感激任何帮助或指向适当的文档.
在里面
$var2 =~ s|/|\\|g;
Run Code Online (Sandbox Code Playgroud)
的s/pattern/replacement/是替换操作符.
在字符串中搜索模式,如果找到,则用替换文本替换该模式,并返回所做的替换次数.否则返回false(特别是空字符串).
该|不是" 二进制或 " -这是一个分隔符.在s您可以使用任何分隔符,尤其是为了更容易阅读.
来自perlop Regexp Quote-Like Operators
任何非空白分隔符都可以替换斜杠.使用标识符中允许的字符后,在s后添加空格.如果使用单引号,则不对替换字符串进行解释(但/ e修饰符会覆盖此字符串).请注意,Perl将反引号视为正常分隔符; 替换文本不会被评估为命令.如果PATTERN由括号引号分隔,则REPLACEMENT有自己的引号对,可能包括也可能不包括引号,例如s(foo)(bar)或s/bar /.
上述每一个替换/用\的$var2.(这\是转义字符,因此您需要使用\\).
my $v='/a/b/c';
$v =~ s|/|\\|g;
print "$v\n";
# \a\b\c
Run Code Online (Sandbox Code Playgroud)
也,
如果没有通过=〜或!〜运算符指定字符串,则搜索并修改$ _变量.
$_ = $v; # assign the $_
s{\\}{/}g; # substitution on the $_ using bracketed delimiters
print; # without args prints the $_
# /a/b/c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |