Argument "\\n" isn't numeric in numeric comparison (<=>)
初心者です。よろしくお願いします。
WindowsXP,ProffesionalでApache,LANの中だけでやっています。
以下の(1)、(2)が Apache の error.log に 非常にたくさん出てきて困っています。
(1) Argument "-" isn't numeric in numeric comparison (<=>) at C:/ApacheGroup/--- line 235., referer: http://---
(2) Argument "\\n" isn't numeric in numeric comparison (<=>) at C:/ApacheGroup/--- line 235., referer: http://---
このファイルは、だいたい以下のようになっています。
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI qw(-debug :standard);
# 45個のファイルから一行目を取り出します。
open(FILE, "../4k/4k01/+score.txt") or die "$!";
my $line1 = <FILE>;
close(FILE);
#------------------------------------------
open(FILE, "../4k/4k02/+score.txt") or die "$!";
my $line2 = <FILE>;
close(FILE);
#------------------------------------------
# これを繰り返します。
#------------------------------------------
open(FILE, "../4k/4k45/+score.txt") or die "$!";
my $line45 = <FILE>;
close(FILE);
#------------------------------------------
# 取り出した行の例は
# 82,問題番号,1548,2009年07月15日 14時11分20秒 ( = $line1)
# です。
# この行は、別の cgi ファイルで、以下のように書き込んだものです。
---------------------------------------------
# open(FILE, '<+score.txt') or die "$!";
# my @data = <FILE>;my ($e, $f , $g, $h) = split(/,/, $data[0]);
# close(FILE);
# my $data2 = $e +1;
# open(FILE, '>+score.txt') or die "$!";
# print FILE $data2;
# print FILE (",問題番号,$num,$year年$mon月$day日 $hour時$min分$sec秒\n");
-------------------------------------------
# これを @array に 入れます。
my @array = ("$line1,4k01","$line2,4k02", ---繰り返し--,"$line45,4k45");
# ソートして、表示します。
@array = sort { (split(/\,/,$b))[0] <=> (split(/\,/,$a))[0]} @array; #-- line 235
for my $val (@array){ #-- line 236
print $val . "<br>"; #-- line 237
}
すると、---
104,問題番号,1541,2009年07月15日 14時26分46秒 ,4k06
102,問題番号,1541,2009年07月15日 14時29分43秒 ,4k18
94,問題番号,1541,2009年07月15日 14時20分07秒 ,4k20
82,問題番号,1541,2009年07月15日 14時30分14秒 ,4k25
以下省略
--- と 表示されます。
error.log に表示されないようにするには、どうしたら、いいでしょうか? お教えください。
お礼
ご回答ありがとうございます! 私も質問した後、この振舞いを説明できるとしたら、仰るように振舞うしかないよなあと思っていたので、それが確認できて安心しました。 find_link()メソッドはリンクが見つからなければundefを返すという説明がmanにされていたので、 successメソッドもfaulseになるものと思いこんでいたのが間違いだったのですね。 だから、サイトの変更に対してよりsecureなコードとして、本来なら、 $mech->find_link(...)) or die ... $mech->success() or die .... と二重にチェックするべきですね。 少々マニアックな質問だったので、回答が頂けないのではないかと心配しておりました。 ありがとうございました。