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;

これらの 1 つは、書くよりも明確かもしれませんs/\///g。(これはあなた次第です。)

区切り文字を自由に選択できることは、すべての引用符のような演算子に当てはまります。たとえば、またはまたは"x"と書くこともできます。詳細については、 man-pageの「Quote and Quote-like Operators」を参照してください。qq{x}qq/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 に答える