2. スクリプト
仮に、todays.pl としたが、、
その日にレースがあれば、発走時刻順にタイトル行を並べる。
#!/usr/bin/perl
#===========================================================================#
# 前提:Perl 5.8 以上がインストール済みで、非蓄積系&速報系の JV データが
# テキスト型で保存されていること。for Windows
# Usage: perl todays.pl # .pl にperl を関連付けてある場合はWクリックで
#############################################################################
# ただ、その日のレースを発走順に表示するだけ。
# $Id: $
#===========================================================================#
use strict ;
my @ba_of = ( '−−', '札幌', '函館', '福島', '新潟', '東京', '中山',
'中京', '京都', '阪神', '小倉' ) ;
########################################################################
my $outF = 'todays.txt' ; # 出力ファイル名 ★
my $pass = 'h:/TDAT' ; # レースファイルのある場所 ★
########################################################################
my ( $dd, $mm, $yy ) = ( localtime )[ 3, 4, 5 ] ; # 今日の日付
$yy += 1900 ;
$mm += 1 ;
my $yymmdd = sprintf "%04d%02d%02d", $yy , $mm , $dd ;
$pass .= "/$yy" ;
########################################################################
my @dat ;
my $datRA = "$pass/RADW" . $yymmdd . '.DAT' ; # 出馬表レースデータ
open DAT, $datRA or die "?? No File ??:$!\n" ;
while ( <DAT> ) {
chomp ;
push @dat, [ unpack '@19 A2 @25 A2 @592 a12 @614 A1 @616 A2 @634 A3 @697 A4 @705 A2
@709 A2 @873 A4 @881 A2', $_ ] ;
}
close DAT ;
open OUT, ">$outF" ;
my @sorted = sort { $a->[9] <=> $b->[9] } @dat ;
for ( @sorted ) {
my ( $bbcd, $rnum, $ti, $gr, $sh, $jy, $ky, $tr, $cors, $hsGF, $to ) = @{ $_ } ;
my ( $hG, $hF ) = unpack 'A2A2', $hsGF ;
next if $sh > 14 ; # 障害レースは外す。外さないなら、この行削除。
my @r_shub = ( '', ' 2歳 ', ' 3歳 ', '3歳上', '4歳上' ) ;
my $shub = $r_shub[substr( $sh, -1 )]; # 馬齢条件
my $rmd = sprintf "%2dR( %2d/%2d )", $rnum, $mm, $dd ; # レースNo.月日
my $t_dz = $tr < 23 ? '芝' : 'ダ' ;
{
my $soto = '' ;
$soto = '外' if $tr =~ /12|13|16|18|19|22/ ;
$soto = '直' if $tr == 10 ;
$t_dz .= $soto ;
$t_dz .= $cors if $tr < 23 ;
}
my $clah = &hjcl( $gr, $jy ); # 表示用クラス
##### ======= レース・タイトル行プリント ================ #####
my $title =
sprintf " %s%s %-6.6s %s:%s:%4sm%-6s%2d頭 %2d時%02d分発走\n",
$ba_of[$bbcd], $rmd, $ti, $shub, $clah, $ky, $t_dz, $to, $hG, $hF ;
print OUT $title ;
}
close OUT ;
sub hjcl { # クラス表示用
my ( $w, $w1 ) = @_ ; my $cl ;
if( $w eq 'A' ) { $cl= 'G1' ; }
elsif( $w eq 'B' ) { $cl = 'G2' ; }
elsif( $w eq 'C' ) { $cl = 'G3' ; }
elsif( $w eq 'E' ) { $cl = $w1 == 999 ? 'OP特' : sprintf( "%2d特", $w1 ) ; }
else {
if( $w1 == 999 ) { $cl = 'OP' ; }
elsif( $w1 == 701 ) { $cl = '新馬' ; }
elsif( $w1 == 702 ) { $cl = '未出' ; }
elsif( $w1 == 703 ) { $cl = '未勝' ; }
else { $cl = sprintf "%4d", $w1 * 100 ; }
}
return $cl ;
}
__END__