bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

もう少しだけperl

もう少しだけperlで文字列操作を勉強することにしよう。
get_fieldの関数の説明おかしい。配列ではなくて文字列だわ。
スペースで区切られた文字列を配列に入れて何番目の要素を取るかって話です。

#!/usr/bin/perl
# $ARGV[0]:field
# $ARGV[1]:input file
# $ARGV[2]:output file

# 全レコードを配列に入れる
open IN, $ARGV[1] or die "$!";
while(<IN>) {
	chomp;
	push @records, $_;
}
close IN;

# 配列から引数で指定したフィールドを取得
sub get_field {
	my( $field, $list ) = @_;
	return (split " ", $list)[$field];
}

# 取得したフィールドをファイルに出力
open OUT, ">".$ARGV[2] or die "$!";
foreach (@records) {
	print OUT get_field($ARGV[0],$_)."\n";
}
close OUT;