;
用作语句分隔符,因此在语句末尾放置多个;
很好,因为它只是添加空语句。
我遇到了这个代码,最后有多个;
,但删除它们会导致错误:
$line =~s;[.,]$;;;
应与
相同$line =~s;[.,;]$;
但事实并非如此。发生了什么事?
答案 0 :(得分:13)
在您提供的代码段中,;
用作搜索n替换正则表达式的分隔符。
$line =~s;[.,]$;;;
相当于
$line =~ s/[.,]$//;
答案 1 :(得分:7)
在您的代码中,只有最后一个;
是语句分隔符。其他是替换运算符所采用的正则表达式分隔符。写这个的更好方法是:
$line =~s/[.,]$//;
由于您的语句中必须包含语句分隔符和正则表达式分隔符,因此不能删除任何尾随;
答案 2 :(得分:3)
分号不是普遍的语句分隔符;它也可以是带引号的字符串或正则表达式分隔符。甚至是一个变量名,就像阿比盖尔这个经典的JAPH,名为“事情不是他们看起来的样子。”
$; # A lone dollar?
=$"; # Pod?
$; # The return of the lone dollar?
{Just=>another=>Perl=>Hacker=>} # Bare block?
=$/; # More pod?
print%; # No right operand for %?