2010-12-27 8 views
1

私はそれは非常に簡単な質問だと私は理解していますが、私は本当にそれをグーグルで失敗しました。このような=(置換操作で置き換えられたものはどのように印刷するのですか?

私が持っている何か:

$a =~ s/(\w*)/--word was here--/g; 

そして、私は言葉が交換されたログファイルに入れたい

--word was here-- 123 --word was here-- 234 --word was here--

aa 123 bb 234 ccそして、それは大丈夫です、。 aabbおよびccを覚えてログファイルに書き込む必要があります。どうすればよいですか?

実際に私はリンクリムーバースクリプトを持っていますが、削除されたリンクを覚えておく必要があります。私はあなたの仕事を簡素化しようとしましたが、理解するのがずっと難しくなりました - 申し訳ありません。

+0

一部の入力データと予想される出力データを表示する必要があります。 – toolic

答えて

4

あなたは式として右側を評価e修飾子を使用することができます

my $string = "xxx ; yyy ; zzz"; 
my @replaced; 
while ($string =~ s/(\w+)//) { push @replaced, $1 }; 
print join(",",@replaced); 
# OUTPUT: xxx,yyy,zzz 

\wがAであることに注意してくださいアルファベットではなくWORD文字であるため、0〜9の数字も一致します。 文字のみを一致させる場合は、[[:alpha:]]クラスを使用してください。

+0

うわー。それは試してみるといいですね=) – leshka

+0

+1。 Trixy hobbitses :) – DVK

+0

あなたは最高です;) – leshka

0

以下の販売店を配列に取り込まれたすべての言葉:

use strict; 
use warnings; 
use Data::Dumper; 

my $s = 'cat dog'; 
my @words; 
while ($s =~ s/(\w+)//) { 
    push @words, $1; 
} 
print Dumper(\@words); 

__END__ 
$VAR1 = [ 
      'cat', 
      'dog' 
     ]; 

更新:あなたは数字を除外するように今、あなたは、入力および出力データが追加されていること、それが見えます。その場合、[\w]の代わりに[a-zA-Z]を使用できます。あなたが代わりに/g;のループの中でそれを行うことができます

$a =~ s/(\w*)/log_it($1), ""/ge; 
+1

ありがとうございました。私はちょうどそこに良い方法があると思った。 – leshka

+1

しかし、それは私が探していたものです。 – leshka

関連する問題