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
[[解決]]
猫さん、返答が遅くなりすみません。
今日も、ずっと書籍などを睨めっこしながらやって
何とか解決することが出来ました。
解決してみると、何とも単純なところを書き換えたり、書き加えるだけ
なのですが、悩んでいる最中は、全然その単純なところが解らないのですね…
今も、別な問題に直面していますが、あれこれやってみます。
みなさん、いろいろとありがとうございました(^^)
[上に]
[前に]
[次に]