Perlで、あるファイルの最終行を取り出すには?

[上に] [前に] [次に]
がんま [E-Mail] 2000/01/12(水) 19:27:44
Perlのことで、質問があります。

あるファイルの最終行の文字列を取り出し
比較させることをやっているのですが、リファレンスに書かれている…

> $x = pop(@xx);        # 最後の要素を取り除き、これを返す

これを使用しようすると、最終行では無く、そのもう一つ上の行の
データを読みに行ってしまうのです。

制御構文などを、いくつか使ってみたのですが
私の組み方が悪いのか、思った通りの結果にならないのです。

そもそも、私の解釈が間違っているのかも知れませんが、
最終行を取り出す方法がありましたら、教えていただきたいのです。

すみませんが、よろしくお願いします。

※遅ればせながら、去年はいろいろとこちらでお世話になりました。
 今年も、よろしくお願いします。

andi 2000/01/12(水) 19:40:36
$last = $#xx;
$xx = $xx[$last];
はどうですか?

がんま [E-Mail] 2000/01/12(水) 23:42:39
[[解決]]
こんばんは、andiさん

試してみたのですが、どうしても
最終行の一つ上を、取り出してしまいます。

今もやっているんですが、どうしてもうまく行かない…
もう少し、いろいろと試してみます。

ありがとうございました。

Yuuki [E-Mail] 2000/01/13(木) 02:53:24
解決を押してる所、失礼します。(^^;

----ここから
#!/usr/local/bin/perl

open( IN, __FILE__ ) || die;
@arr = <IN>;
close( IN );

$line = pop( @arr );

print $line;   # ここが最終行だよ。
----ここまで
これを実行すると print $line;   # ここが最終行だよ。 と表示されないですか?
表示されないならなんでだろう、、?(^^;;

がんま [E-Mail] 2000/01/13(木) 03:31:47
Yuukiさん、こんな時間にありがとうございます。
しかし、解決していなかったりします(;_;)

書いていただいたリストは、大丈夫でした。
それで気が付いたのが、以前からopen(IN)の中に入ってた

if ($count == 4) { last; }

これの「4」が原因しているのが、判明!
しかし、それでも、やりたいことが解決して無かったりします。

また、質問するのもあれなんですが、ちょっとだけ書かせてもらいます。

openで指定したファイル、仮にsave.datとして
その中に入れられる文字列は10個(行)までとして
10個すべてあるなら、最終行と比較し、10個未満であれば
指定したデータを保存する。

文章で書くと、なんてこと無いんだけど
組むとなると、出来ないと言う状態です。

何かヒントみたいなものでも、ありましたら、よろしくお願いします。

2000/01/13(木) 04:13:54
>10個すべてあるなら、最終行と比較し、10個未満であれば
比較とは、具体的にはどういう風に比較したいんですか?

がんま [E-Mail] 2000/01/13(木) 23:43:42
[[解決]]
猫さん、返答が遅くなりすみません。

今日も、ずっと書籍などを睨めっこしながらやって
何とか解決することが出来ました。

解決してみると、何とも単純なところを書き換えたり、書き加えるだけ
なのですが、悩んでいる最中は、全然その単純なところが解らないのですね…

今も、別な問題に直面していますが、あれこれやってみます。

みなさん、いろいろとありがとうございました(^^)

[上に] [前に] [次に]