繰り返して表示するのではなく1つだけ表示させるソースをおしえていただけないでしょうか?
繰り返し表示されてしまうので"foreach"の部分を"if"に変えたのですが、今度は入力されたデータが表示されません。どうか教えてもらいないでしょうか?
----参照-----
#foreach (@all){
if (@all){
# 1行の文字列をコロンを目印にして項目に分割する
($time, $name, $mail, $title, $message) = split(/:/, $_);
# 1件分のデータを表示するサブルーチン
&one_message;
}
close(KEIJI);
No.2ベストアンサー
- 回答日時:
察するに、これの前を含めるとこんな感じですか?
open(KEIJI, "<keiji.txt");
@all = <KEIJI>;
foreach (@all){
($time, $name, $mail, $title, $message) = split(/:/, $_);
&one_message;
}
マニュアルを見れば一瞬で分かりますが、
foreachは、通常、foreach $variable ( @array )
の形で使われ、配列@arrayの中身を順に$variableに
セットして、ブロック内を実行します。
で、$variableを省略したときには、$_に値がセットされます。
しかし、if( @all )では、変数$_に配列@allの中身がセット
されないために問題が起こっています。したがって、
$_に、表示させたい@allの要素を明示的にセットしてやれば
良いのではないでしょうか?「1つだけ」ということですので、
@allの先頭の要素だけを表示するようにしてやると、
if( $_ = $all[0] ){
($time, $name, $mail, $title, $message) = split(/:/);
&one_message;
}
こんな感じです。これで、$_に@allの先頭要素をセットし、
その中身がちゃんと定義されている時だけ、ブロック内が
実行されます。
ちなみに、splitも少し変わっていますが、
タイプミスではありません。
splitもforeachと同様、第2引数を省略すると
$_が使われます。
No.1
- 回答日時:
質問にもうちょっと補足が必要です(^_^;
このルーチンが何をするプログラムの、どんな部分かが分からなければ、この質問だけでは何も答えられません。
こちらから見ると、1回だけ呼び出したいなら foreach と if の外側に &one_message を出してしまえばいいだけのことのように見えます。
これは言葉足らずで申し訳ないです。
こちらから見ると、1回だけ呼び出したいなら foreach と if の外側に &one_message を出してしまえばいいだけのことのように見えます。
▲私も試しましたがこれをやると入力した言葉が表示されなくなってしまいます。なぜだろう。
補足ですが、このプログラムは単純にお問い合わせフォームを作り、これを指定したメールで送るという仕組みです。その中でも疑問のところは最後にメールを送ると同時にお問い合わせした内容をブラウザー上に表示させるというところです。そこで表示させるのに上記のやり方だと何個も表示されてしますということです。
言葉足らずで申し訳ありませんでした。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースから取得したデー...
-
perlで2つの配列を比較する方...
-
配列やハッシュで中身が同じか...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
VBAで3秒だけ時間を止めたい
-
VBA for i=1 to lastrow
-
VBAでの一時停止と再開の方法
-
CSVファイルの特定の行だけを読...
-
アクティブセルから、A列最終行...
-
VBAのautofilter、criteriaの配...
-
vb.netです。2次元配列の要素を...
-
Application->Run();の機能につ...
-
DoEventsが必要な理由について
-
vbscriptでIE自動入力(途中で...
-
一巡伝達関数と開ループ伝達関数
-
ダイアログのテキストにマウス...
-
素数であるかどうかを判定する...
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlでファイルの拡張子を除い...
-
python質問
-
DBIを使ってのデータの取り出し...
-
grep関数を用いた複数行からの抽出
-
データベースから取得したデー...
-
配列内定義サブルーチン呼び出し
-
C言語の関数ポインタのイメージ...
-
桁数指定と四捨五入
-
アルファベットn文字の組み合わ...
-
index関数で複数個抜き出す
-
Perl 戻り値の型の判定って出来...
-
二桁の数字からなる配列数10...
-
サブルーチンと繰り返し処理を...
-
ソート時同じ値がある場合、表...
-
ファイルの最後の行から表示さ...
-
半角文字の縦書き表示
-
配列やハッシュで中身が同じか...
-
乱数と順列と組み合わせ
-
ハッシュ内の各値部分に配列を...
-
正規表現に関する質問
おすすめ情報