如何从明星中删除斜线?

时间:2012-09-14 17:16:21

标签: regex perl

如何从str中删除斜杠?在perl上需要解决方案。 我试过了

        ($phot) = $photos =~ s/\///g;

但它不起作用

2 个答案:

答案 0 :(得分:10)

在Perl中,s///运算符会修改您应用它的字符串;所以,你应该写:

my $phot = $photos;
$phot =~ s/\///g;

或更简洁:

(my $phot = $photos) =~ s/\///g;

在Perl的最新版本中,您可以使用标记/r来获得更像您期望的行为:

my $phot = ($photos =~ s/\///gr);

但你必须检查你的Perl版本是否有它。 (您可以运行perl -v来查看您拥有的Perl版本。此功能是在Perl v5.14.0中引入的。)


编辑添加:由于amon在评论中指出,Ωmega暗示在他/她的答案中,s///运算符允许其他分隔符比/;所以,例如,任何这些都可行:

(my $phot = $photos) =~ s{/}{}g;
(my $phot = $photos) =~ s#/##g;
(my $phot = $photos) =~ s'/''g;        # note: prevents variable interpolation
(my $phot = $photos) =~ s-/--g;

其中一个可能比写s/\///g更清楚。 (这取决于你。)

选择分隔符的这种自由对于所有类似引用的运算符都是正确的;例如,"x"也可以写为qq{x}qq/x/qq-x-。有关详细信息,请参阅"Quote and Quote-like Operators" in the perlop man-page

答案 1 :(得分:0)

(my $phot = $photos) =~ s#/##g;

(my $phot = $photos) =~ s{/}{}g;