ISBN-10ISBN-13相互変換とハイフン編集をするjavascriptの生成実験その3
今日あらためて昨日のスクリプトを動かしていたら、メッセージが表示されている事に気がついた
Use of uninitialized value in string at ./get_test.pl line 23. Use of uninitialized value in length at ./get_test.pl line 25. Use of uninitialized value in string at ./get_test.pl line 23. Use of uninitialized value in length at ./get_test.pl line 25.
スクリプトを眺めても別におかしいところがないなと思いつつ、printで色々表示させたところ元データの微妙なところを発見
gi.area9972 = new Object; gi.area9972.text="Peru"; gi.area9972.pubrange="00-09;1;200-249;2500-2999;30-59;600-899;9000-9999"; gi.area9975 = new Object; gi.area9975.text="Moldova"; gi.area9975.pubrange="0;100-399;4000-4499;45-89;900-949;9500-9999";
常にxxx-yyyな表記ではないのね。
my $max = (split /-/)[1];
なんて書いちゃってたものだから、yyyが無いとエラーには当然なりますわな。
配列の個数を調べてゴニョゴニョとかかっこわるいなと思いつつ、リャマ本を眺めていたら
配列にたいして負のインデクスを指定すると、要素を末尾から数えます。
とある。
という事は次のように記述すれば、xxx-yyyだろうがyyyだろうが常に配列の最後の値を持って来れると
my $max = (split /-/)[-1];
無事OK!
ちなみに
- JSで生成している版は最初からうまくいってましたとさ
// Peru ["997209999","4","2"], ["997219999","4","1"], ["997224999","4","3"], ["997229999","4","4"], ["997259999","4","2"], ["997289999","4","3"], ["997299999","4","4"], // Moldova ["997509999","4","1"], ["997539999","4","3"], ["997544999","4","4"], ["997589999","4","2"], ["997594999","4","3"], ["997599999","4","4"],
- 残念な事にISBN検索でハイフンが必須なパッケージの割合って思ったより少ないんだよね*1