• ベストアンサー

1件だけ表示させる方法

Dpopの回答

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

何件目を取り出したいのか。が、明確になっていませんね。 例えば、1件目を取り出したいのであれば、 ($school, $grade, $birth) = split(m/,/, $txt[0]); で出来ますし、最後のレコードであれば、 ($school, $grade, $birth) = split(m/,/, $txt[-1]); でできます。特定のレコードを読み出したい場合には、foreachなどでループさせて置いて、表示したいレコード番号を取得し、$txt[レコード番号]を与えれば良いでしょう。

ma_trix
質問者

お礼

回答ありがとうございました。私のミスで、 $txt[0]);とすべきところを @txt[0]);としていました。 Perlはややこしいです。

関連するQ&A

  • perl 計算結果をファイルへ出力したい

    perl やり始めたばかりです。宜しくお願いします。 入力ファイル data.txt があるとします。 data.txt は、 123 456 789 333 555 777 以上のようなテキストファイルといたします。このファイルを 以下の様に100分の1にして出力したい。 1.23 4.56 7.89 3.33 5.55 7.77 と言うことで、この場で教えていただきました。それが、以下です。 #!/usr/bin/perl open(IN, "data.txt") or die ; @x = <IN>; close (IN); foreach $line (@x){ chomp($line); @elms = split(' ',$line); foreach $data (@elms){ print $data/100," "; } print "\n"; } おかげ様でこれはこれで上手く動きました。そこで、出力値をファイルに 書き込みたいのです。 もちろん、以下の様な方法でファイルに 書き込めるのは判っております。 計算プログラム.pl > outfile.txt しかし、上のプログラムをベースにファイルに書き込めないかと色々と 試してはみましたが、どうも上手く行きません。 どなたか教えて頂けないでしょうか? 宜しくお願い申し上げます。

    • ベストアンサー
    • Perl
  • テキストファイルになにも入っていないのを確認して・・・

    書き込みファイル(.txt、.datなど)は最初データは入っていませんよね。空っぽです。 そのときにある変数に0や1を入れたいのですが、ちゃんと認識してくれません。 書き込みファイルの内容は@txtに入っているとします。ただし、まだデータは1件も書き込まれていません。 foreach (@txt) { chomp; ($id, $tonum, $c_date, $c_status, $chkbox) = split(/,/, $_); if( !$_ ){ $id = 0;} として、$idに0を入れたいと思ったのですが、 記録された内容は、 1,1020,2006/9/14,E,0 ,1020,2006/9/14,B,0 →ココ でした。つまりなにも入っていないのです。 ここに値を入れる方法を教えてください。

    • ベストアンサー
    • Perl
  • shift-jisをUTF-8に読み込ませるには?

    shift-jisにてcsv形式で保存しているテキストファイルの配列(カンマ区切りの3番目)から取り出したものをUTF-8にエンコードする方法をご教示賜りたくご質問させて頂きました。 $Pscrtfl = "./datas/pdtscrt.txt"; open (DT,"<$Pscrtfl"); @Pscrt = <DT>; close (DT); foreach $i (@Pscrt){ @iW = split(/\,/,$i); $Pscrtfl = "./datas/pdtscrt.txt のtxtに入ってる3番目のデータを取り出して、それをUTF-8文字コードに 変換して出力させたいと思っております。 現在のところ私のやってみたこと foreach(@Pscrt){ use Encode; Encode::from_to( $_, 'utf8', 'shiftjis' ); $Pscrtfl .= $_; } とエンコードかけてみるんですが。。。。やはりcsvファイルの文字がUTF-8に変更していないのか、 <!doctype html> <html><head><meta charset="UTF-8">でprintしようとすると、やはり文字化けしてしまいます。 これを文字化けしない方法がお分かりの方おられましたら、ぜひご教示下さいませ。

    • ベストアンサー
    • Perl
  • データの抽出、配列操作で教えて下さい。

    こんばんは、お世話になります。 配列操作で教えて頂きたく。 次のデータをuser.datとします。 1<>yamada<>99999<> 2<>tanaka<>22222<> 3<>suzuki<>10101<> 4<>yamada<>12345<> 5<>yamada<>55555<> user.datの中からyamadaの行だけ取り出して 3番目の数字データでソート表示したいのですが なかなかうまくいきません。 open(F,"user.dat"); @load_txt = <F>; close(F); foreach $data (@load_txt){ if((split(/<>/,$data)[2]) eq "$usid"){push(@txt_lines,$data);} } @txt_lines = sort{(split(/<>/,$a))[2] <=> (split(/<>/,$b))[2]}@txt_lines; 上記でおかしな所ありましたらご教示頂きたく 宜しくお願いします。

    • ベストアンサー
    • Perl
  • 2次元の配列にデータを格納したい

    hoge.txtの様なファイルがあって、この値を2次元の配列に格納したいのですが、簡単に実現することは可能でしょうか? open (FILE, "hoge.txt"); foreach (<FILE>) { # この中で、2次元の配列に格納したい } hoge.txt A  1 B  2 C  3

    • ベストアンサー
    • Perl
  • 繰り返して表示するのではなく1つだけ・・

    繰り返して表示するのではなく1つだけ表示させるソースをおしえていただけないでしょうか? 繰り返し表示されてしまうので"foreach"の部分を"if"に変えたのですが、今度は入力されたデータが表示されません。どうか教えてもらいないでしょうか? ----参照----- #foreach (@all){ if (@all){ # 1行の文字列をコロンを目印にして項目に分割する ($time, $name, $mail, $title, $message) = split(/:/, $_); # 1件分のデータを表示するサブルーチン &one_message; } close(KEIJI);

    • ベストアンサー
    • Perl
  • 重複する値を表示しない

    以下のようなデータ(CSV)があったとします。 1020,大森,3249 1023,高橋,3252 1020,大森,3249 ここで1020が重複しているので重複させないように printしたいと考えています。ほかにも多数のデータ が重複しているかも知れない。 本を見て、ハッシュのキーは重複しない ことを利用して foreach (@man){ $H{$_}=1; #値は無視しキーにセット } @man = keys %H;  #ハッシュキーを配列へ foreach $eachman (@man) { ($num, $name, $encpass) = split(/,/, $eachman); print ・・・・ ・・・・ のように作ってみましたが、重複されて 表示されます。順番のみ変わっていました。 このような感じで簡単にできる方法がありましたら 教えてください。

    • ベストアンサー
    • Perl
  • 【PHP】 次の5件の記事を表示させるには?

    例えば、ログファイル(log.txt)に保存されてる記事数が15件あったとします。 【log.txtファイルの中身】 1,あああ君,おはよう ・ ・ ・ 5,おおお君,良い天気ですね ・ ・ ・ 15,そそそ君,明日は晴れるでしょ ページに表示される仕組みについて、画面に表示される記事数を $log= 5; と変数で 5にしています。 ですので、最初のページ(abc.php)に表示される記事は、「1,あああ君,おはよう」のログから5件表示されるのですが 「次のページ」「前のページ」のリンクで、例えば「次のページ」で(abc.php)リンクした場合、「5,おおお君,良い天気ですね」 のログから5件表示させるにはどの様にするば良いのでしょうか? 仕組みなど詳しく教えて頂けると助かります。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 複数の配列の全ての組み合わせを表示する方法

    複数の配列が定義されており、その各々から一つづつ要素を選んで出来る組み合わせの全てを表示したいのですが、その際に、foreachを単にネストするのではなく、より効率的方法や関数は何かありませんでしょうか。 たとえば、 @list_a = qw(1 2 3 4) @list_b = qw(a b c d) @list_c = qw(x y z) の3つの配列の全て組み合わせ、例えば、 1ax 1ay 1az 1bx 1by 1bz 1cz ... 4dy 4dzを全て表示させるプログラムを作成したいと思っています。 foreach $a (@list_a){ foreach $b (@list_b){ foreach $c (@list_c){ ... のようにforeachをネストすればよいのですが、配列の数がとても多い場合を考えています。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • ログファイル表示で全部表示されたりされなかったり…

    ログファイルをオープン、その中のユーザー名・パスワードと入力されたユーザー名・パスワードを比較して、どちらも一致した場合のみ表示するようなものを作成しました。 ただ単に表示を行うと一致するものすべて表示されるのですが、テーブルなどを使用して表示させると数が減って表示されるのです。 これはいったいなぜでしょうか? ---------- for ($i=0;$i<$gyou;$i++){ @atai = split(/&/,$log[$i]); foreach $atais(@atai){ ($keys, $values) = split(/=/, $atais); $FORMS{$keys}=$values; }#foreach if($FORM{'USER'} eq $FORMS{'USER'}){ if($FORM{'PASSWORD'} eq $FORMS{'PASSWORD'}){ print "$FORMS{'TITLE'}<BR>\n"; print "<BR>\n"; だと全件(19件入力中、一致は18件。18件すべて)表示 一番下を print "<TABLE>\n"; print "<TR><TD>$FORMS{'TITLE'}</TD></TR>\n"; print "</TABLE><BR>\n"; print "<BR>\n"; と変更すると13件しか表示されません。

    • ベストアンサー
    • CGI