Perl分号在语句结束时

时间:2011-12-13 04:36:29

标签: perl

;用作语句分隔符,因此在语句末尾放置多个;很好,因为它只是添加空语句。

我遇到了这个代码,最后有多个;,但删除它们会导致错误:

$line =~s;[.,]$;;;

应与

相同
$line =~s;[.,;]$;

但事实并非如此。发生了什么事?

3 个答案:

答案 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 %?