LoginSignup
0
0

More than 3 years have passed since last update.

昔作ったperl_2

Last updated at Posted at 2019-09-17

昔作った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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0