偶数奇数判定しそれぞれ別ファイルに出力
サンプルプログラム
ファイルを読み込んで、キーとなる番号で分類し、それぞれのファイルに出力したい場合のプログラムです。
📝サンプルプログラム名:「GUNSUKISU.pl」
use strict;
use warnings;
use utf8;
binmode STDIN, ‘:encoding(cp932)’;
binmode STDOUT, ‘:encoding(cp932)’;
binmode STDERR, ‘:encoding(cp932)’;
#入力ファイル
my $入力FILE = “IN.txt”;
#出力ファイル(偶数)
my $出力偶数FILE = “OUT_GUSU.txt”;
#出力ファイル(奇数)
my $出力奇数FILE = “OUT2_KISU.txt”;
#入力ファイルをオープンする
open(入力FILE, “<$入力FILE”) or die(“error :$!”);
#出力ファイルをオープンする
open(出力偶数FILE, “>$出力偶数FILE”) or die(“error :$!”);
open(出力奇数FILE, “>$出力奇数FILE”) or die(“error :$!”);
#ファイルを1行ずつ読み込む
while (my $line = <入力FILE>){
#読み込んだデータでキーとなる項目を切取し取得
my $Key = substr($line, 1, 4);
if ($Key % 2 == 0) {
#キーが偶数の場合、偶数用のファイルに出力します
print 出力偶数FILE $line;
} else {
#キーが奇数の場合、偶数用のファイルに出力します
print 出力奇数FILE $line;
}
}
#入力ファイルをクローズします
close(入力FILE);
#出力ファイルをクローズします
close(出力偶数FILE);
close(出力奇数FILE);
print “ファイルの出力が完了しました”;
C:\perl>perl GUNSUKISU.pl
ファイルの出力が完了しました
C:\perl>
入力ファイルについて
入力ファイルは次のようなファイルを想定しています。
0001 | 一郎 | 19 | c |
0002 | 次郎 | 18 | c |
0003 | 三郎 | 17 | c |
0004 | 一子 | 16 | c |
0005 | 二子 | 15 | c |
0006 | 三子 | 14 | c |
0007 | 四郎 | 13 | c |
上記データ、左側の0001~0007をキーに振り分けを行います。
「my $Key = substr($line, 1, 4);」で文字を切り取り、「$Key % 2 == 0」で偶数か奇数かを判定します。
「0」始まりでも問題なく動作します。
出力ファイル
偶数か奇数で分類し、それぞれのファイルに出力することを確認できました
コメントを残す