Perlで改行コードがCRのファイルを読み込む方法
Perlで改行コードがCRのファイルを読み込む方法を紹介します。
1.問題点
改行コードがCRのファイル「test.txt」があるとします。
てすと1
てすと2
てすと3
てすと4
てすと5
このファイルを次のPerlスクリプトで読み込んでも正常に処理されません。
#!/usr/bin/perl
use strict;
open my $fh, "test.txt";
foreach my $line (<$fh>) {
print;
}
このスクリプトを実行すると、次のようになります。
C:\tmp>perl test.pl
てすと5
ということで、改行コードがCRのファイルを読み込む方法を紹介します。
2.改行コードがCRのファイルを読み込む
改行コードがCRのファイルを読み込むには、特殊変数"$/"を利用します。
#!/usr/bin/perl
use strict;
open my $fh, "test.txt";
local $/ = "\r";
foreach my $line (<$fh>) {
print "$line\n";
}
"$/"は入力時の区切り文字を指定する特殊変数です。右辺の"\r"は改行コードがCRであることを示します。
このスクリプトを実行すると、次のように正常に処理されます。
C:\tmp>perl test.pl
てすと1
てすと2
てすと3
てすと4
てすと5
local変数のスコープを局所化したい場合、次のようにするとよいでしょう。
#!/usr/bin/perl
use strict;
my @data;
open my $fh, "./test.txt";
{
local $/ = "\r";
@data = <$fh>;
}
foreach my $line (@data) {
print "$line\n";
}
このコードの実行結果は先ほどと同じです。
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
- Perlで文字列結合しながらs///演算子で置換する方法
トラックバックURL
コメントする
greeting