![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
初心者です。よろしくお願いします。
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 に表示されないようにするには、どうしたら、いいでしょうか? お教えください。
No.2ベストアンサー
- 回答日時:
perl -Mstrict -Mwarnings -e 'print "foo" <=> "bar"'
Argument "bar" isn't numeric in numeric comparison (<=>) at -e line 1.
Argument "foo" isn't numeric in numeric comparison (<=>) at -e line 1.
たぶん"-"と"\\n"(これ改行文字をシングルクォートで囲んでませんか・・・?)を比較してるんだと思いま
す。
元のファイルが間違ってる可能性が高いです。
ご回答、まことにありがとうございました。
open(FILE, "../4k/4k01/+score.txt") or die "$!";
my $line1 = <FILE>;
close(FILE);
を
open(FILE, "../4c/4k01/+score.txt") or die "$!";
my $line1a = <FILE>;
my $line1 = "$line1a - 4k01";
close(FILE);
と直しました。そして
my @array = ("$line1,4k01","$line2,4k02", ---繰り返し--,"$line45,4k45");
を
my @array = ($line1,$line2, ---繰り返し--- ,$line44,$line45);
としました。
そして、元のファイルが空のとき、
0,
を書き込みました。
そうしたら、うまくいきました。
ありがとうございました。
No.3
- 回答日時:
「元のデータに問題がないかどうかわからない」というなら, まずそれを確かめてください. データ自体が間違っていたら話にもなりません
よ.No.1
- 回答日時:
とりあえず確認したいんですが, 元のデータは問題ないですか?
あと, ソートせずに出力したら問題ないんでしょうか?
ありがとうございます。ソートせずに
for (my $i = 0; $i < 46; $i++){
print $array[$i];
print "<br>";
}
としたら、そして、
no warnings qw(uninitialized);
としたら、Apache の error.log には何も表示されません。
問題ない、と思われます。
元のデータは問題ないのか、どうか、は、私にはわかりません。元のデータはテキストファイルから読み込んだ1行です。
すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Ruby 教えてください 2 2023/01/04 17:50
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
先頭の単語が一致した時のデー...
-
perlでcsvファイルを読む(ダブ...
-
Java CSVファイルをカンマごと...
-
Perlでの重複要素カウントにつ...
-
Perlで特定行から特定行までを...
-
VBAで巨大なファイルの途中から...
-
エクセルVBA コードが同じでも...
-
dos変数の%~dp0は powershellで...
-
read() on unopened filehandle...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
batファイルでrenameができませ...
-
Perlの変数に文字数制限(容量...
-
並び方、
-
close()で例外が投げられる理由
-
改行コードが勝手に
-
パスから最後のディレクトリだ...
-
VBAでCSVファイルを途中行まで...
-
fortranのファイル入出力のopen文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
Perlの初心者です。2重ループ...
-
ディレクトリ内のtxtファイル中...
-
Perlで空白行を削除
-
perlでcsvファイルを読む(ダブ...
-
Perlを利用してテキストフ...
-
ファイルの3行目までを出力したい
-
foreachの制御
-
Java CSVファイルをカンマごと...
-
Argument "\\\\n" isn't numeri...
-
エラーチェック、ファイルに特...
-
CSVデータの編集の際の重複チェ...
-
FTP接続時失敗時、接続先名をcs...
-
CSVファイルのデータの行数を取...
-
cgiのログの書き方
-
MATLAB std::exceptionエラー
-
VBAでCSVファイルを途中行まで...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
バッチファイルの作り方(CSV→...
おすすめ情報