配列の右端の要素を保存するには??

[上に] [前に] [次に]
匿名 1999/06/18(金) 21:22:51
配列の一番右の要素をいったんはずしておいて、
文字を追加書き込みしてから、また一番右端にさっきの要素を追加したいです。
open(IN,"log.dat");
@lines = <IN>;
close(IN);

@lines = reverse(@lines);
($lines,@lines) = @lines;
@lines = ($lines,aaaaaa,@lines);
@lines = reverse(@lines);

open(IN,">log.dat");
print IN "@lines";
close(IN);

いまはこうやってリバースを二回使ってごまかしているのですが、
ログが多くなってくると恐ろしく負荷がかかりそうで心配です。
なにかスマートなやり方があったら教えてください。
お願いします。

じぇい 1999/06/18(金) 21:52:28
Perlには便利な関数がたくさん用意されています。(僕も初心者なんであんまり偉そうなことは言えませんが。)

http://www.tohoho-web.com/wwwperl2.htm#Array

ここを参照してみてください。

匿名 1999/06/18(金) 23:35:41
[[解決]]
お返事ありがとうございます。
@last = splice(@lines, -1);
@lines = (@lines,$new,@last);
としたらうまくいきました

じぇい 1999/06/18(金) 23:45:52
popとかpushとか使ったほうがいいことないですか、、?

ちなみに、
$hoge = pop @hoge;
とすると、
$hogeには、@hogeの最後の要素が入ります。

mm 1999/06/19(土) 01:43:20
push,pop以外の方法
1.splice(@lines,$#lines,0,$new);
2.@lines = (@lines[0..($#lines-1)],$new,$lines[$#lines]);

>($lines,@lines) = @lines;
って、prologかLispをやっておられるのですか?

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