• ベストアンサー

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

  • perlでの正規表現について

    文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。

  • WORDでの置換による文字削除について

    WORDで置換による文字削除をしたいんです。 [質問] 内容 という感じで何列も続いている文章があります。 置換で[質問]は消すことができるんです。 しかし、内容もすべて消すことはできるのでしょうか。 例: [質問]あなたの名前は? [質問]貴方の年齢は? [質問]趣味はなんですか という内容があったとします。 その質問の右側の内容も置換ですべて削除したいんです。 非常に困っています。 どうか、よろしくお願いします。

  • EmEditorでマクロ? 選択文字列を含む行の一括削除

    テキストエディタとしてEmEditorを使用しています。 「ある文字列」を全て削除する場合は置換を使えばできますが、 「ある文字列を含む行」を全て削除するにはどうすればよいのでしょうか。 マクロ機能を使用すればできるのではないかと思いましたが、 私は、マクロの記録/停止で実際に行った操作を記憶させる方法しか使ったことがなく、 この方法では上手くできませんでした。 文章中から任意の文字列を選択し、マクロの実行で文字列が含まれる行を一括削除 ということを行いたいです。 このようなマクロをご存じでしたら教えて頂けないでしょうか。 あるいは、これらのことは置換のみでもできるのでしょうか。

  • perlでの入れ子文字列削除

    perlを利用して文字列処理を行う際に、入れ子になった文字列を削除したいのですが、正規表現のうまいやり方が思い浮かびません。 例としましては 今日は雨(雪ではない(この辺の処理に困っている))が降っている。 という文章を 今日は雨が降っている。 と処理できるようにしたいです。 $data =~ s/(.*?)//g; $data =~ s/)//g; というやり方では、3重以上になった時の処理ができません。 できれば何重になっても可能な方法をご教示ください。

    • ベストアンサー
    • Perl
  • Word2003 ()内の文章を自動的に削除したい

    たとえば、たくさんある文章に括弧内に色々な文字列が含まれている物があるとします。 「( この中に文章 )」というような文字列が文章の中に含まれている場合、括弧のはじめから終わりまでを全て削除したいのですがどのように設定すれば出来るのか分かりません。 置換を利用して「 ( * ) 」 を「 空白 」で消えるかなと試してみたのですがうまくいきません。 ※ 「*」はワイルドカードとして利用しています。 上手な設定方法を教えて下さい。 もし、置換で出来ないのであれば、マクロを使った方法など代案があればお示し下さい。

  • WORDでの置換による文字削除(未解決にて)

    WORDで置換による文字削除をしたいんです。 [質問] 内容 という感じで何列も続いている文章があります。 置換で[質問]は消すことができるんです。 しかし、内容もすべて消すことはできるのでしょうか。 例: [質問]あなたの名前は? [質問]貴方の年齢は? [質問]趣味はなんですか という内容があったとします。 その質問の右側の内容も置換ですべて削除したいんです。 非常に困っています。 どうか、よろしくお願いします。 すみません、先ほども同様の質問をし、解決したと思ったんですがうまくいかなかったので再度質問します。 よろしくお願いします。

  • 文字列の削除

    GALAXY S3を使っています。 メールなどで文字をを入力するときに、文字を削除する場合「<×」のボタンを押しますが、 長い文章を削除するとき、「<×」を押しっぱなしにして順次消えていくのはいいですが、 ボタンを離してもしばらく文字が消されてしまいます。 ボタンを離した瞬間に消すのを止めるにはどうしたらよいでしょうか。

  • Excel2007 - 特定の文字列を一括で削除する方法を教えてください

    シート内に多数存在する文字列を一括で削除する方法はありますでしょうか。 検索と選択>置換で、置換後の文字列を空白にしても置換することができません。 関数を使用する方法しかないのでしょうか。 できれば関数を使用せずに削除したいと思っています。 ご存知の方がいらっしゃいましたらご教示頂けますでしょうか。 どうぞ宜しくお願い致します。

  • 特定の文字などを一括削除したい

     タイトルの通りなのですが、特定の文字などを一気に削除してしまう方法はあるでしょうか?  具体的には、例えばメモ帳などに (1)タイトル ここに文章 (2)タイトル ここに文章 (3)タイトル ここに文章  というような感じの構成の文章があるとします。この中で、(1)、(2)などと表示されている行を全て一括で削除したいのです。A,Bでも箇条書き風に○など何でもいいのですが、特定文字列が含まれている行を全て一括で削除したいのです。上記の場合だとタイトルと書かれてある行を全て削除したいのです。手動で削除するのもいいですが、相当数ある場合かなり大変です。特定文字が含まれている行を一括で削除するなどのフリーソフトはないでしょうか?。また、何か方法があるでしょうか?。回答宜しくお願いします。

  • ファイルの内の文字列の置換について

    質問なんですが、sedコマンドを使用して文字の置換をやってみたんですが、同じファイルに置換した情報を上書きすることは可能でしょうか? 今試した例としては sed -e 's/aaa/bbb/g' test > test と試してみたんですがファイルの内容がなくなってしまっていました。 同じファイルに置換内容を入れることは可能なのでしょうか? 他の方法がある場合は教えてください。 よろしくお願いします。

このQ&Aのポイント
  • 外付けBDを購入し、編集ソフト(corel)をダウンロードしてカメラ動画をパソコンに入力し、DVDに編集したいと考えています。しかし、編集した動画は映りますが音声が出ません。編集時の待ち受け音声は出ているため、何が原因なのか心当たりがありません。
  • 外付けBDを購入して編集ソフト(corel)をダウンロードし、カメラ動画をパソコンに入力してDVDに編集したいと思っています。しかし、編集した動画には映像は表示されるものの音声が出ません。編集時の待ち受け音声は正常に出ているため、何が問題なのか分かりません。
  • 外付けBDを購入し、編集ソフト(corel)をダウンロードしてカメラ動画をパソコンに入力し、DVDに編集したいと考えています。しかし、編集した動画には映像は表示されるのに音声が出ません。編集時の待ち受け音声は問題なく出ているため、どこが原因なのかわかりません。解決策を教えてください。
回答を見る