|
>>1836 ふくし > $path = s|/us/|/jp/|g; > ではうまくいきません。 = じゃなくて =~ という話でしょうか。 > コマンドラインの mkdir -p で中間的なディレクトリをイッキに > 作ってくれますが、Perl の mkdir では作ってくれません。 perl5 の標準モジュール File::Path にある mkpath がご希望の ものでしょう。使い方は perldoc File::Path をご覧下さい。 |
|
>= じゃなくて =~ という話でしょうか。 あっすいません、これは掲示板の書き違いです。 正しく動かないスクリプトはちゃんと =~ と書いています。 ../us/us/.. の場合、先頭の /us/ を置換したら続きの us/ から 処理するので s///g ではいかない、という話のようです。 File::Path はありがとうございました! |
|
>>1838 ふくし > ../us/us/.. の場合、先頭の /us/ を置換したら続きの us/ から > 処理するので s///g ではいかない、という話のようです であれば、man perlre に \G … Match only where previous m//g left off (works only with /g) とありますので、 $path =~ s|\G/us/|/jp/|g; ではどうでしょうか。 >>1836 ふくし > $path =~ s|/us/|/jp/| while $path =~ m|/us/|; でもいいのですが、定番の書き方としては、 1 while ($path =~ s|/us/|/jp/|); というのがありますね。 |
|
>>1839 68user > $path =~ s|\G/us/|/jp/|g; > ではどうでしょうか。 ありゃ、全然ダメだ。というか、意味が全く逆ですね。 こういうときに使う perl の regexp ってなかったっけなぁ。 |