• ベストアンサー

特定の文字列を削除したい

PearlでCGIミニゲームを制作しています。 そこで質問なのですが、 $001 = 'あいうえおかきくけこ'; $002 = 'えおか'; $001から$002を削除したいのですが、 一体どの様にすれば削除する事が出来ますか? 何か良いアドバイスして頂けないでしょうか?m(__)m

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

  • ベストアンサー
  • erara
  • ベストアンサー率32% (45/137)
回答No.3

私もCGIゲームを作っていて特定の文字列を削除したい機会が良くあります。 Ethersky さんの方法で問題なく出来ていますが $002の文字列の中身によってエラーが出ることがあります。 いわゆるダメ文字を避ければ回避できると思いますがいかがでしょうか? 単純化した以下のアドレスでは問題なく実行されますが他にはエラーになる原因は思い当たられないのでしょうか?

参考URL:
http://hpcgi3.nifty.com/role_roll/koukai/goo.cgi

その他の回答 (5)

回答No.6

それほど難しいことではないと思います。 比較する文字列をいったんURLエンコードしてから 置換処理を行い、その後URLデコードするだけで 大丈夫ですよ。

  • txrx
  • ベストアンサー率45% (83/184)
回答No.5

最近Perlはやってないので、自信ありませんが・・・。 Perlの場合、正規表現は1バイト文字列で行います。 # 少なくとも私がPerlしてた数年前は・・・。 なので、2バイト文字の正規表現を行うと不具合が続出です。EUCでもJISでもシフトJISでも・・・。 通常は、jocdeと言うライブラリを使用して日本語(2バイトコード)を処理します。 参考URLをご覧ください。 あと、私が失敗した例では、FTP使用時とTelnet使用時のコード変換です。 Telnet使用時ではEUCでコードを書き、テストで上手くいったので実際のサーバへアップするわけですが、この時S-JISへ自動変換してしまい上手く動作しなかったと言った事が度々ありました。

参考URL:
http://srekcah.org/jcode/
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

perlスクリプトファイルの文字コードは何ですか? shift-JISを使っていると、いろんなところでエラーが発生しやすくなりますけど。 とくに、正規表現やパターンマッチにおいては、EUCを使うのが無難です。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

> 何故か、エラーが発生して利用出来ないのです。 エラーの内容が分かれば対処できますが。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

基本は置き換えを利用して削除します。 $001 = 'あいうえおかきくけこ'; $002 = 'えおか'; $001 =~ s/$002//g;

kyanasaki
質問者

補足

ご返答ありがとう御座います! 私も上記の方法を以前から試しているのですが、 何故か、エラーが発生して利用出来ないのです。 様々事を調べたらsplice(@001,$002,1); と記入しても無理でした(当たり前!?) ん~ 普通は上記の教えて頂いた方法が一般的だと思います。 それが今回は使えないのでそれ以外はないでしょうか?

関連するQ&A