1

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

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

但它不起作用

4

2 回答 2

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}orqq/x/qq-x-。有关详细信息,请参阅手册页中的“引用和类似引用的运算符”perlop

于 2012-09-14T17:19:43.100 回答
0
(my $phot = $photos) =~ s#/##g;

或者

(my $phot = $photos) =~ s{/}{}g;
于 2012-09-14T17:29:37.933 回答