• ベストアンサー

perlで文字の一部を削除したい

$test='なんとか.かんとか。なんとか.かんとか。'; この文字を削除・置換する場合、 $test =~ s/\./。/g; $test='なんとか。かんとか。なんとか。かんとか。'; で良いと思うのですが、これを、ある、サブルーチンの中で行うと文章が全て削除されてしまいました。 理由も分かりません。どのようにすれば、「.」を置換できますかね?ご存知の方教えてください。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

・変数のスコープを勘違いしている。 ・サブルーチンの引数のプログラミング誤り。 ・サブルーチンの戻り値のプログラミング誤り。 ・非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); }

関連するQ&A

専門家に質問してみよう