if ( $head eq 'UMPW' ) { # 血統
open DAT, $file or die "?? $file ??:$!\n" ;
# while ( <DAT> ) {
# chomp ;
# my $uuu = substr( $_, 11, 10) ;
# $ummast{ $uuu } = $_ ;
# }
until ( eof( DAT ) ) {
my $record ;
my $dm = read ( DAT, $record, 1576 ) ;
my ( $uuu, $titi, $haha, $jiji, $hons, $sskal, $ssk_mw,
$ssk_ky, $kyst, $rsuk ) =
unpack '@11 A10 @212 a18 @256 a18 @388 a18 @1020 A9
@1092 A18 @1110 A108 @1452 A108 @1560 A12 @1572 A3',
$record ;
$ummast{ $uuu } =
[ $titi, $haha, $jiji, $hons, $sskal, $ssk_mw, $ssk_ky, $kyst, $rsuk ] ;
}
close DAT ;
}
# でコメントアウトしたところが、以前の部分で青字の部分が書き換えたところです。my ( $titi, $haha, $jiji, $hons, $sskal, $ssk_mw, $ssk_ky, $kyst, $rsuk ) = @{ $ummast{ $ucd } } ;こんな感じで活かします。リファレンスですね。
if ( $rad == 2 ) { my ( $titi, $haha, $jiji ) = @{ $ummast{ $ucd } } ; my $skline = sprintf "%s(%2d)%-9s(父)%s (母)%s (母父)%s\n", $waku, $ub, $unami, $titi, $haha, $jiji ; push @skline, $skline ; }基本情報の下に、例えばコノように表示されます。
-騎手名 コード 差芝.ダ 芝内.外.偶.奇 ダ内.外.偶.奇 内田博幸: 00422: 42 66 : ** ** 43 ** : ** ** 72 73 ペリエ : 00432: 94 58 : ** 84 ** 85 : ** 71 76 76 大西直宏: 00597: 75 55 : 55 55 70 76 : 96 39 57 66 本田優 : 00600: 59 53 : 90 ** 94 98 : ** 72 71 78 木幡初広: 00629: 77 66 : 85 93 89 65 : 69 69 90 76 中舘英二: 00635: 45 37 : 65 68 68 72 : 77 71 83 62 石橋守 : 00637: 24 49 : 79 53 46 45 : 72 91 89 96 柴田善臣: 00641: 68 70 : 63 59 80 80 : 90 86 89 75 熊沢重文: 00652: 62 44 : ** ** 67 88 : 99 31 63 86 松永幹夫: 00657: 76 58 : 72 69 82 84 : 62 87 79 76 横山典弘: 00660: 84 52 : 78 61 89 79 : 46 93 80 69 蛯名正義: 00663: 60 54 : 70 71 76 70 : 73 87 62 66 武豊 : 00666: 66 58 : 72 64 69 74 : 83 75 78 73 菊沢隆徳: 00672: 90 62 : 65 65 78 96 : 78 55 77 77 芹沢純一: 00674: 56 75 : 71 62 69 77 : 55 72 75 63 小野次郎: 00679: 53 59 : 58 81 81 92 : 44 ** 78 71 佐藤哲三: 00682: 74 60 : ** 96 90 89 : 80 41 70 84 田中勝春: 00684: 63 97 : 65 48 65 67 : 91 72 79 81 角田晃一: 00685: 53 66 : 50 64 55 48 : ** 43 34 73 江田照男: 00689: 78 50 : 94 75 70 65 : 70 61 54 62 四位洋文: 00700: 87 48 : 64 81 77 ** : 48 55 66 72 藤田伸二: 00705: 80 46 : ** 56 90 81 : 63 83 77 78 安田康彦: 00708: 61 83 : 37 ** 84 69 : ** 35 60 85 上村洋行: 00709: 65 67 : 88 ** 75 79 : ** ** 76 ** 後藤浩輝: 00711: 80 52 : 78 73 93 81 : 93 91 73 89 -騎手名 コード 差芝.ダ 芝内.外.偶.奇 ダ内.外.偶.奇 小林淳一: 00712: 90 62 : 70 63 74 88 : 51 38 69 48 飯田祐史: 00718: 78 64 : 20 16 79 54 : 67 50 87 60 幸英明 : 00732: 48 66 : 64 73 75 65 : 50 57 79 57 吉田豊 : 00733: 72 57 : 38 ** 77 78 : 78 ** 83 67 渡辺薫彦: 00734: 76 52 : ** ** 52 74 : 61 47 57 67 石崎隆之: 00863: ** 60 : 31 55 71 78 : ** 46 59 63 小牧太 : 00894: 66 ** : 52 ** 63 57 : ** 98 94 88 デザーモ: 00897: 91 ** : ** ** 88 97 : ** 96 ** 86 安藤勝己: 00945: 82 61 : 62 ** 93 77 : 91 97 78 69 福永祐一: 01014: 67 81 : 81 55 71 80 : 51 ** 90 92 和田竜二: 01018: 38 62 : 54 53 65 80 : 95 37 90 91 秋山真一: 01019: 82 ** : 54 ** 70 86 : ** 58 ** 79 勝浦正樹: 01025: 60 47 : 88 54 72 72 : 28 97 75 70 武幸四郎: 01026: 56 48 : 59 65 66 69 : 71 48 76 76 村田一誠: 01031: 70 58 : 87 50 64 67 : 49 28 47 70 池添謙一: 01032: 72 64 : 65 69 77 72 : 91 37 60 77 太宰啓介: 01037: 70 68 : 37 42 60 57 : 35 ** 70 96 北村宏司: 01043: 74 70 : ** 83 82 80 : 67 ** 87 77 二本柳壮: 01049: 52 45 : 45 25 58 68 : 49 78 61 65 柴原央明: 01074: 64 41 : ** 40 87 75 : 56 ** 63 74 田辺裕信: 01075: ** 98 : 99 40 83 83 : 77 46 ** 66 石橋脩 : 01077: 54 44 : 78 50 77 58 : 48 ** 77 54 北村浩平: 01079: 44 52 : 27 42 72 62 : ** ** 70 73 生野賢一: 01081: 54 43 : 85 35 51 57 : ** ** 67 52 長谷川浩: 01084: 84 65 : 65 34 81 63 : ** 16 62 76 -騎手名 コード 差芝.ダ 芝内.外.偶.奇 ダ内.外.偶.奇 松岡正海: 01085: 68 ** : ** 5 50 82 : 84 62 85 90 川田将雅: 01088: 45 72 : 96 ** ** 64 : ** 37 77 76 丹内祐次: 01091: 53 55 : 7 68 47 91 : 48 44 73 63 津村明秀: 01092: 49 90 : ** 28 73 69 : 18 30 84 91 藤岡佑介: 01093: 75 49 : 77 ** 94 64 : ** 41 61 85 吉田隼人: 01095: 99 89 : 94 18 78 79 : 18 ** 78 80 赤木高太: 05223: 69 87 : 25 17 61 49 : ** 79 71 95 柴山雄一: 05243: 86 56 : ** ** 61 69 : 60 ** 80 57 ルメール: 05339: 68 39 : 58 82 88 76 : 35 27 74 ** 吉田稔 : 05041: 75 50 : 78 48 86 63 : 28 ** 79 59 小林徹弥: 00722: 59 77 : 40 68 51 63 : 82 94 50 ** 鮫島良太: 01099: ** 27 : ** 0 78 68 : 12 39 74 21 橋本美純: 00714: 76 61 : 63 94 64 74 : 38 76 64 52 武士沢友: 01029: 68 85 : 37 ** 64 73 : 55 78 73 72 岩田康誠: 05203: 75 80 : 69 54 70 91 : ** 80 96 67 川島信二: 01062: 81 73 : ** ** 87 69 : ** ** ** ** -騎手名 コード 差芝.ダ 芝内.外.偶.奇 ダ内.外.偶.奇数値は(無難ということで)複の回収率を使い、100%を超えるものは ** という
my %testks ; my $kstest = 'test_k.dat' ;以下のように、リファレンスをハッシュに
open DAT, $kstest or die " nothing $kstest \n" ; while( <DAT> ) { chomp ; next if /^\-/ ; my ( $kn, $cd, $ss, $tf, $dt ) = split /: / ; $testks{ $cd } = [ $ss, $tf, $dt ] ; } close DAT ;使うときは、当然騎手コードまたは騎手名が識別できるところで、
my $ksts ; KAD: { defined( $testks{ $kcd } ) or last KAD ; my ( $ss, $tf, $dt ) = @{ $testks{ $kcd } } ; my ( $sst, $ssd ) = split ' ', $ss ; my $ads = ' ' ; my ( $in, $out, $gu, $ki ) = () ; if ( $tr < 23 ) { # 芝 ( $in, $out, $gu, $ki ) = split ' ', $tf ; $ksts = $sst ; } else { # ダート ( $in, $out, $gu, $ki ) = split ' ', $dt ; $ksts = $ssd ; } if ( $ub == 1 ) { # 最内 $ads = $in ; } elsif ( $ub == $to ) { # 大外 $ads = $out ; } elsif ( $ub % 2 ) { # 奇数 $ads = $ki ; } else { # 偶数 $ads = $gu ; } $ksts .= $ads ; }で、$ksts には例えばペリエが芝の1枠1番に入ると、94** となるので、適当な