昔作ったperlの2個目
ピポットでマックスと伝票番号枠のmaxとminを取得するのに作成。
ハッシュにいれつつif分でデータ修正することが目的 だった気がする。。。
#!/usr/bin/perl
############################################################################
#----------------------------------------------------------------------------------------#
use Data::Dumper;
use English;
use File::Basename;
#----------------------------------------------------------------------------------------#
# 検索
#----------------------------------------------------------------------------------------#
my $hash = {};
{
#104,705,912,20180427,036600,036600
while (my $rec = <>) {
chomp $rec;
my ( $kok, $dm_no, $syukkahyo, $hasso_yymmdd, $uriage, $hatu ) = split( /,/, $rec );
s/\s*$// for ( $uriage, $hatu );
my $key = sprintf( "%s,%s", $kok, $syukkahyo );
unless ( exists( $hash->{$key} ) ) {
$hash->{$key} = {
MAX => $dm_no,
MIN => $dm_no,
CNT => 1,
};
next;
}
$hash->{$key}->{MAX} = $dm_no
if $hash->{$key}->{MAX} lt $dm_no;
$hash->{$key}->{MIN} = $dm_no
if $dm_no lt $hash->{$key}->{MIN};
$hash->{$key}->{CNT}++;
}
}
{
for my $key ( keys %$hash) {
printf( "%s,%s,%s,%10d\n", $key, $hash->{$key}->{MIN}, $hash->{$key}->{MAX}, $hash->{$key}->{CNT} );
}
}
#-----------------------------------------------------------#
exit
久しぶりに作ったらうまくできなかったのでちょっと追記。。。
#!/usr/bin/perl
############################################################################
#----------------------------------------------------------------------------------------#
use Data::Dumper;
use English;
use File::Basename;
#----------------------------------------------------------------------------------------#
# 検索
#----------------------------------------------------------------------------------------#
my $hash = {};
my $TECD = {};
# 引数の処理
my $rec = @ARGV[0];
my $file = @ARGV[1];
open(IN, "$file");
{
while (my $file = <> ){
chomp $file;
my ( hoge ) = split( ",", $file );
$TECD{$hoge} = "$hoge";
}
}
open(IN, "$rec");
{
while (my $rec = ){
chomp $rec;
my ( hogehoge ) = split( /,/, $rec );
my $key = sprintf("%s", $StoreCode);
if (exists $TECD{$key} ) {
print "hogehoge\n";
}
}
}
#-----------------------------------------------------------#
exit