- ベストアンサー
perlで文字の一部を削除したい
$test='なんとか.かんとか。なんとか.かんとか。'; この文字を削除・置換する場合、 $test =~ s/\./。/g; $test='なんとか。かんとか。なんとか。かんとか。'; で良いと思うのですが、これを、ある、サブルーチンの中で行うと文章が全て削除されてしまいました。 理由も分かりません。どのようにすれば、「.」を置換できますかね?ご存知の方教えてください。宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
・変数のスコープを勘違いしている。 ・サブルーチンの引数のプログラミング誤り。 ・サブルーチンの戻り値のプログラミング誤り。 ・非ASCIIな文字列/正規表現の処理法を間違えてた。 ・実はサブルーチンは正しく動いてるけど、確認法が誤ってた。 ――という観点からデバッグしてみては。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.3
そのサブルーチンを含めた実際のプログラムを補足してください。 サブルーチンに変換する文字 $test=&rep($test, "\.","。"); とかしてませんよね?
- SE-1
- ベストアンサー率57% (26/45)
回答No.2
#以下のようにして、さぶるーちんの前、中、後で内容を確認してみるとヒントが得られるかもしれないですね。 use strict; my $test='なんとか.かんとか。なんとか.かんとか。'; print "TEST= $test\n"; my $test2 = &subst($test); print "TEST2= $test2"; sub subst{ my $test1=$_[0]; $test1 =~ s/\./。/g; print "TEST1= $test1\n"; return ($test1); }