ログファイルから任意の行を取り出すために、フォームで行を指定(入力)後、送信ボタンを押すと
表示させるようにしました。
if文はこんな感じです。
if ($NO == ''){
print &all;
}
else{
print &no;
}
1より大きい時と、何も入力しないときはきちんと希望したものが表示されるのですが、
問題は0を入れたとき(ログファイルの1行目を出したい時)に、何も入力されてないと
認識されてしまうのです。
どうしたらよいでしょうか?
※$NOの後の==をeqに変えると何も入っていなくても0と認識されてしまいます。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
&noのサブルーチンがどうなっているのか分かりませんので、普通に全部書き出す時と1行書き出す時の
スクリプトを書いておきます。
##ログファイルを開く
open(IN,"開くファイル名")
@lines = <IN>;
close(IN);
##ナンバーが記入されてなければ全部(下の例は1行ごとに改行)、されていれば その行だけを書き出し
if($NO eq ""){
foreach $line (@lines){
print $line."<BR>";
}
}else{
print $lines[$NO];
}
No.3
- 回答日時:
ぐはっ
おおぼけをかましていまいました。全面的に訂正します。
実は、FORMで入力した値を parseする部分を間違えてました。
if ($NO eq '') {
で正常に動作しているようですよ。
(補足依頼)
FORMで入力した値の取得はどうやってます?
Sub no($NO) はどうなってます?
No.2
- 回答日時:
ちょっと姑息だけど、簡単な手段。
if ($NO eq '') {
$NO = -1;
}
if ($NO < 0){
print &all;
} else {
print &no;
}
でも、普通は 0 や「リターン」が入力された時は特別な処理というのが一般的なプログラミングじゃないですかね。
この例でいえば全てが対象とか、処理終了とか。
「リターン」のみはケースバイケースではねることも。
No.1
- 回答日時:
== は数値比較用の演算子なので、比較対照が文字列の場合は数値化して比較します。
(数値への変換方法は、Cの atof と同じです。)したがって '' は数値の 0 と認識されるので、$NO が 0 の時は「等しい」と判断されるのです。
で、普通は $NO eq '' として、“何も入っていない場合は” という条件にするのですが、
> ※$NOの後の==をeqに変えると何も入っていなくても0と認識されてしまいます。
ということは、何も入っていないはずの $NO に、何らかの値が入っていることが考えられます。
実際、
$NO = '';
if ($NO eq '') { print "Empty\n" }
というスクリプトでは Empty と表示されますから、if文の直前で次のようにして $NO の値を確認してみる必要があります。
printf "\$NO="$NO", length=%d\n", length($NO);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGI(Perl)とHTMLについて
-
結果を得て自動的にページ移動...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
CLispのloop内の挙動について
-
16進の10進変換について
-
c言語のプログラミングの問題で...
-
VBAでPDFのコピーとリネームを...
-
パイソンのクラスについて
-
セレクトボックスである項目を...
-
formで特定のinputを送信しない...
-
Net::SSH::Perlについて
-
パイソンのクラスのブログラム
-
vscode 文字化け
-
パイソンのクラスについて
-
【至急!!!】python言語で本を見...
-
【メモリ不足で落ちる(python)】
-
パイソンプログラミング
-
セレクトメニューで2つの項目...
-
セレクトボックスのselected属...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
malformed header from script....
-
結果を得て自動的にページ移動...
-
Perl CGIの中で # を使ってコメ...
-
my $html<<EOMの意味を教えてく...
-
テキストファイルの読み込み
-
Perlでの数字の12桁化
-
shift-jisからutf8に変換
-
どうしてもCookieとCGI・perlの...
-
パソコン → パャRン
-
cgiでのデータ受信
-
CGIから出力される文字が化けて...
-
サムネイルCGI
-
SSI にグローバル変数を渡すこ...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
16進の10進変換について
-
実行時エラー 3020の対策
おすすめ情報