• ベストアンサー

Perlでテキスト処理をしたいのですが・・・

 はじめて質問します。  私は印刷会社に勤務しているのですが、職務上テキスト処理を行う事が多いので、テキストに強いソフトはないか調べていた所、Perlを見つけ、今勉強中のところです。  初めはActivePerlの5.8.3を使っていたのですが、まだシフトJISに問題があるようで、文字化けをして使い物にならないので、Jperlに最近変えました。  一様Jperlは、文字化けをしないか、総ての文字を調べました。結果は、Perlのような文字化けは無かったですが、まだ、実際に仕事に使えるものなのか、不安です。   ========================== (質問) (1)Perlにはいろいろ種類があるようなのですが、どれが一番日本語のテキスト処理に向いているのでしょうか?Jperl以外にありましたら、教えてください。 (2)Jperlの今のバージョンより最新バージョンはありますか?教えて下さい。 (3)JperlにもActivePerlのように、文字がおかしくなるようなバグがあるのでしょうか? ========================== 環境はWindous2000 Jperl(5.005_03) 文字はSjis ご解答お願いしますm(..)m

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

  • ベストアンサー
回答No.1

>>初めはActivePerlの5.8.3を使っていたのですが、 >>まだシフトJISに問題があるようで、 >>文字化けをして使い物にならないので、Jperlに最近変えました。 基本的に、機種依存の文字コードを処理する事は別問題なのでPerlのバグということではありません。 >>(3)JperlにもActivePerlのように、 >>文字がおかしくなるようなバグがあるのでしょうか? バグではないですが、一部正しく処理できない事はあります。 Jperlは、楽に文字コード処理をしたいと 言うことで出来たPerlですので漢字処理は比較的 うまくやってくれます<ActivePerlは別のJcode.plが必要となったりしますので・・・逆に言うと 追加モジュールを組めば同じ事です

Chiaki---
質問者

補足

Aruku-20030515さん ありがとうございます。 Perlの文字化けはバグではなかったんですね、わかりました(^_^) >>Jperlも一部正しく処理できない とありますが、具体的にはどういった事ですか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

(1)5.8以上のバージョンでは、日本語を扱えるようになりました。 質問文の内容での文字化けは、他の回答者も答えられているようなshift_jisに起因するものだと思います。 プログラムの最初に use encoding 'shiftjis'; とすることで、入力ファイルがシフトJISであることを認識し、内部的にunicodeで処理するようになるので、大丈夫です。 (2)(1)でも述べたように5.8以上で標準的に日本語(ユニコードによるので日本語とは限らない)が扱えるようになったので、今後バージョンアップはされなくなると思います。

Chiaki---
質問者

お礼

返答ありがとうございます! さっそく試したいと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.2

 Perl の文字化け現象は、一部の文字がエスケープシーケンス(¥)を使用してしまっており、それを Perl がシステムコードと誤解することで発生します。  よって(3)に関しては「ノー」といえます。  ただし、一般に JPerl と呼ばれているのは日本語に対応した Perl プログラムの総称で、特定のソフトウェアを指す言葉ではありません(違うソフトがそれぞれ個別に JPerl を名乗りあってるからです)。  よって、(2)に関しては明確な返答ができません。  Perl が文章解析に強いと言われているのは、 ・初心者の登竜門である文字解析技術の訓練に気軽に使える ・正規表現が気軽に使える  という2点が大きいところです。  よって、言語としてのレベルが高くてよく、なおかつ正規表現をさほど使わないのであれば、C言語とかでもご希望の処理は可能です。

Chiaki---
質問者

お礼

返答ありがとうございます! 正規表現は結構使うので、やっぱりPerlですかね・・。でも、どうにかPerlとうまくやっていけそうな気がしてきました!文字化けも大丈夫そうなので。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • テキストエディターの文字化け

    素人の者です。 これまで、PHPのプログラムの書き込みをSJISで行ってきましたが、どうもネット上を調べているうちにSJISはあまり使わないほうが良いようなことが書いてあったので、UTF-8で書くことにしようと思いました。そして、UTF-8で書いていてWEB上は特に問題なく文字化けもせず表示されるのですが、テキストエディターで再度ファイルを開くと、テキストエディター内で文字化けしていることがあります。メモ帳で開くときはファイルの文字コートをUTF-8に指定すれば文字化けしません。サクラエディターで開けば、何もしなくても文字化けしません。php_editor_stdで開けば、文字化けします。ez-HTMLで開けば、文字化けします。???とこんな具合です。テキストエディターを開くときにエンコードを指定して開けば、文字化けはしないであろうと考えて、設定の部分を色々と探していじってみても、文字化けの現象は変わりません。SJISですと、ダメ文字とかあるのでやはり切り替えていったほうが良いと思い試している最中です。テキストエディターで文字化けした場合、どのようにすれば解消するのかお分かりになる方がおりました教えていただけないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Shift-jisのPerlから、UTF-8、EUC、Shift-jisの3つのエンコードテキストを生成

    Shift-jisで作ったPerlにて、テキストをEUC、UTF-8、Shift-jisにエンコードし外部検索サイト等にテキストリンクを飛ばしたいのですが、うまくいきません。 過去ログにUTF-8から、EUC、UTF-8、Shift-jisへのエンコード方法をみつけ http://oshiete1.goo.ne.jp/qa3745875.html 試行錯誤しましたが、Shift-jisからはうまくいきませんでした。 perl のバージョンは5.8.8です。 ご教示のほどよろしくお願いします。

    • ベストアンサー
    • Perl
  • perlで読み込むテキストの文字コードは一般に何?

    Perl初心者です。 perlで簡単なソフトを作り、時々変化する情報をテキストファイルから読み込むようにしています。 昔は、Shift-jisでしたが、文字化け対策が嫌になり、UTF-8に統一しました。 皆様は、何を使われていますでしょうか? また、読み込みや出力には、そのファイルの文字コード指定していますか? 質問させていただいた動機について(無駄に長いです) 最近パソコン初心者の友達へ、プログラムを作ってあげたのですが、どうもうまく動かない。 設定ファイルに書いてある内容が何か合わないようです。 色々試行錯誤して、3日ほど悩んだ結果、相手のパソコンで編集(Vista)すると、BOMというものが付くことが分かり、とりあえず、それを削除することで無事動作致しました。 UTF-8であれば、文字コードなど気にせず万能だと思っていたのですが、これだけ悩まされると、UTF-8以外の方にもっと良い方法があるのではないかと思い質問させていただきました。

    • ベストアンサー
    • Perl
  • サーバ上のテキストファイルの文字化けについて(iMac/Safari)

    お世話になります。 当方Windousユーザーでサイト制作に関わっています。 Macの環境が身近になく困っています。 あるサイトからテキストファイルにリンクしているのですが そのテキストファイルの文章がiMacのSafariで見ると文字化けします。(MacOS X10.3.9、Safari 1.3.2 (v312.6)) 念のためShift-JISとUTF-8等でそれぞれ保存した別ファイルでテストしてみたところ、 UTF-8では、正常に表示されたもののShift-JISでは文字化けします。 ちなみにWindowsXPのSafariや、MacBookのSafariだと問題なく表示されます。 (MacOS X10.5.2、Safari 3.1.1) これは、このバージョンの問題なのでしょうか? UTF-8のテキストファイルにリンクする以外の改善方法をご存知の方はいらっしゃいませんか? いらっしゃいましたら、教えていただけないでしょうか? 宜しくお願いいたします。 ※何か不足している情報があれば調べますので、ご指摘ください。

    • ベストアンサー
    • Mac
  • 文字コード変換

    送信元のページがShift_JISの場合は正常に動作するのですが、 UTF-8等の場合は文字化けしてしまいます。 &jcode'convert(*val, 'sjis'); ↑のものを use Encode; Encode::from_to( $val, "UTF8", "Shift_JIS", Encode::XMLCREF ); このように書いたところ、UTF-8も文字化けしないのですが、 コードを自動的に認識して自動で振り分けさせる方法がわかりません。 サーバーのPerlのバージョンは5.8.6です。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ソラリス8のperl5.8が漢字を正しく表現しない

    Solaris8(SPARC)にperl5.80をインストールしました。 下記スクリプトを実行すると ------------------------------ #!/usr/local/bin/perl use encoding "sjis"; printf("噂のC言語\n"); ------------------------------ 出力される文字が 奄フC言語 となってしまいます。 漢字コードはシフトJIS(ja_JP.PCK)を設定しています。 上記スクリプトは、Windows-2000上のperl5.80では、 正しく「噂のC言語」と出力されます。 同一条件(soralis8(SPARC) perl5.80 (ja_JP.PCK))で 正しく日本語を表示出来た方は、おりますでしょうか。 また、この文字化けの改修方法をご存じの方、おりましたら教えてください。

  • VB6のテキスト処理 さまざまな文字コード/改行で対応

    VB6のテキスト処理で、Open InputとLine inputを使った場合に 文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。 改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか? また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

  • JIS C 6226(旧JIS)コードをパソコンで認識表示したい。

    測定装置から旧JISコードでデータが出力されていると思われますが、これをハイパーターミナルやTera Termで認識する方法を紹介してもらったんですが日本語を認識できません。Tera Termは旧JISデータ対応かと思われたんですが結果的にはハイパーターミナルと同じでした。シリアルポートからの旧JISを認識して、SJISで表示させるプログラムは無いでしょうか?探してみたんですが見つかりませんでした。前に無理じゃないかと助言を頂きましたが・・・。 それか旧JISコードをJISで受けて、JISで文字化けしたしたテキストファイルから逆に旧JISコードを認識させ改めてSJISに変換させることは可能でしょうか?ハイパーターミナル等で文字化けしたテキストを変換できないでしょうか?教え下さい。

  • C#でテキスト読込時、文字コード誤りを防ぐには?

    Visual C# 2005です。 現状、入力パスのテキストを文字コードSJIS("shift_jis")として読み込んで処理を行う、 というツールがあるのですが、 オペミスで、入力パスに、文字コードEUC("euc-jp")のテキストが格納されていた場合、 現状は、処理の途中で、 「入力文字列の形式が正しくありません。」や 「オブジェクト参照がオブジェクトインスタンスに設定されていません」 等の例外となってしまいます。 これ(テキストがEUCであることを検知、又は、SJISでないことを検知) を事前(実行ボタン押下直後)に確認する方法はないでしょうか? 厳密にチェックする方法がなければ、可能性の示唆でもかまいません。 また、SJIS⇔EUCが逆の場合(EUCであるべきテキストがSJISであった場合)も知りたいです。 よろしくお願いします。 因みに、テキストを用意する人とツールを実行する人(素人)は別の人なので、 画面に「事前に文字コードを確認して下さい」と表示しても無意味とのことです。