如何从str中删除斜杠?在perl上需要解决方案。 我试过了
($phot) = $photos =~ s/\///g;
但它不起作用
答案 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;