perl5.8.8を使っています。
日本語にマッチする正規表現を書きたいのですが、どうしてもマッチしません。
例えば、以下のファイルtest.txtから「さしすせそ」だけを抽出し、表示させたいです。
---------test.txt--------------------------------
あいうえお
かきくけこ
さしすせそ
たちつてと
--------------------------------------------------
----------test.pl--------------------------------
use strict;
use warnings;
open(FILE, 'test.txt') or die "$!";
my @file = <FILE>;
close(FILE);
foreach my $line (@file){
if($line =~ /^さ/){
print "$line\n";
}
}
------------------------------------------------
このtest.plを実行しても「さしすせそ」を抽出することが
できません。
どうしたらよいのでしょうか?
自宅の新しいバージョンのperlだとできるのですが
会社のperlは5.8.8で顧客環境でもあるのでバージョンアップも
できません。
すみませんが、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
この内容なら、もっと古いバージョンでも動きそうなのですが。
「さ」は、いわゆる「だめ文字」ではないですし。
test.txtとtest.plとで文字コードが違ってたりしませんか?
もっと複雑なのになると、このままでは、日本語がバイト毎に分解されて処理されるので、問題になります。
例: 'あい' =~ /^(..)/ は、$1='あい' にならない。$1='あ'の1バイト目 'あ'の2バイト目 になる
その場合は、UTF8フラグ付きにencode/decodeして使えば日本語の1文字を「1文字」として扱ってくれます。
5.8.8だと、UTF8フラグ付き文字列も使えるレベルになっていたはずです。
参考URL:http://www.rwds.net/kuroita/program/Perl_unicode …
No.4
- 回答日時:
ファイルの文字コードとプログラムの文字コードの不一致が原因だと思います。
Encode::Guess モジュールを使えば、文字コードを調べることができます。なお、私の手元にある Linux 上の Perl v5.8.1 でも Encode::Guess は装備済なので、v5.8.8 であれば使えると思います。use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
...
my $q = Encode::Guess->guess(join('', @file));
print ref($q) ? $q->name : $q;
上記のようなコードを元のプログラムに組み込むと、判別に成功すればファイルの文字コードを表示してくれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl の外部モジュールの利用方法
-
ファイルアイコンの左下に緑の□...
-
perlのプログラミング 部分入れ...
-
ペプシコーラとコカ・コーラとD...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
Blenderについて
-
perl このテキストファイルを簡...
-
Perlでファイルの末尾から指定...
-
秀丸での一括変換について
-
英数文字列のうちの数値を4桁に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報