Perlでローカルなバージョン?のファイルハンドルを作るには?
[上に]
[前に]
[次に]
andi
1999/12/03(金) 12:56:45
以下のようなレコード
1
2
3
4
5
があり、
1
2
3
4
5
2
3
4
5
3
4
5
4
5
5
という結果が求めたいのですが、
while(<FH>){
print "$_<br>";
while(<FH2>){
print "$_<br>";
}
}
というイメージで処理が出来ればと思っています。
具体的には、<FH2>のループに入る時点で<FH>のポイントを
<FH2>に与え、<FH2>の終了後、<FH2>のポイントをクリアし、
<FH>を<FH2>の前の位置で再開したいのですが。
分かり難いっすね・・・
勿論tellとseekでも同様の処理は可能ですが、
ファイルハンドルをローカル変数のように扱えないものかと悩んでおります。
リファレンスを使用すればできるのかと思いましたが
残念ながら上手く行きませんでした。
もし可能でしたら御教授下さい。
(縦長ですみません・・・)
きたむら
1999/12/03(金) 17:32:47
ファイルハンドルの複製でやるのはどうですか。
while(<FH>){
print "$_<br>";
open(FH2, "<&FH");
seek(FH2, tell(FH), 0);
while(<FH2>){
print "$_<br>";
}
}
#最初は複製するだけでFHの現在位置もコピーできないかと
#期待したんですが、実験してみるとやはり
#seek(FH2, tell(FH), 0); は必要でした。
andi
1999/12/03(金) 17:53:15
やっぱり無理ですかねぇ。
きたむらさんありがとうございます。
[上に]
[前に]
[次に]