【Perl】偶数奇数判定しそれぞれ別ファイルに出力

偶数奇数判定しそれぞれ別ファイルに出力

サンプルプログラム

ファイルを読み込んで、キーとなる番号で分類し、それぞれのファイルに出力したい場合のプログラムです。

📝サンプルプログラム名:「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」始まりでも問題なく動作します。

 

出力ファイル

偶数か奇数で分類し、それぞれのファイルに出力することを確認できました

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP