如何从str中删除斜线?需要perl上的解决方案。我试过了
($phot) = $photos =~ s/\///g;
但它不起作用
在 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}
orqq/x/
或qq-x-
。有关详细信息,请参阅手册页中的“引用和类似引用的运算符”perlop
。
(my $phot = $photos) =~ s#/##g;
或者
(my $phot = $photos) =~ s{/}{}g;