0

最も単純な Perl REGEX を実行するのに問題があります。Notepad++ では正しく動作しますが、Perl では動作しません。

open FILE, "Something.txt";
while (<FILE>) {
   s/./f/;
    print;
}

ただし、出力は各行の最初の文字のみを F に変更します。この正規表現が明らかにすべての文字を F に変更すると言っている場合は、

4

4 に答える 4

3

私はしばらくperlを使用していませんが、試してみてくださいs/./f/g(コメントのQuentinによると(感謝)、最初の一致後に停止するのではなく、gがグローバルになります)。

于 2012-05-16T23:06:31.417 に答える
1

g修飾子を追加してグローバルにする必要があります。そうしないと、最初の一致後に停止します。

s/./f/g
于 2012-05-16T23:06:32.227 に答える
1

次のサンプル コードを参照してください。

ファイル :

$ cat /tmp/test
aaaa
bbbb
cccc

Perl コード (私が使用perlconsole)

Perl> open FH, "<", "/tmp/test"
1

Perl> while (<FH>) { s/./f/g; print; }
ffff
ffff
ffff


Perl> close FH
1

Perl> 

置換のg修飾子は、すべての出現を意味します。http://perldoc.perl.org/perlre.html#Modifiersを参照してください。

于 2012-05-16T23:08:20.897 に答える
0

グローバルな変更のためにフラグを立てる必要があります。

open FILE, "Something.txt";
while (<FILE>) {
   s/./f/g;
    print;
}
CLOSE (FILE);
于 2012-05-16T23:07:05.223 に答える