而不是我习惯的典型文件句柄:
open INPUT, $input;
while ($line = <INPUT>) {
....
}
close INPUT;
如何检索文件中指向行的指针,以便我可以在wiil处推进这些指针?我正在尝试创建两个指向其对应的排序文件的指针,这样我就可以根据一个文件中的行是否比另一个文件中的行“更少”或“更大”来推进指针。 / p>
注意:假设输入文件是BIG。
答案 0 :(得分:7)
答案 1 :(得分:0)
为什么不存储在数组中?
my @lines1 = <INPUT1>;
my @lines2 = <INPUT2>;
以下是关于ysth的搜索/告知建议的示例,如果文件太大,可能更符合您的要求: http://www.nntp.perl.org/group/perl.beginners/2007/12/msg97522.html
答案 2 :(得分:0)
鉴于我的评论的答案,那么你需要修改你的逻辑(伪代码):
open Master;
open Transaction;
# Get initial records?
read first Master;
read first Transaction;
BATCH_LOOP:
while (!eof(Master) && !eof(Transaction))
{
while (Master.ID < Transaction.ID && !eof(Master))
{
write Master;
read next Master;
}
if (Master.ID > Transaction.ID)
{
report Missing Master for Transaction;
read next Transaction;
next BATCH_LOOP;
}
# Master.ID == Transaction.ID
Update Master from Transaction;
read next Transaction;
}
# At most one of the following two loop bodies is executed
while (!eof(Master))
{
read next Master;
write Master;
}
while (!eof(Transaction))
{
Report Missing Master;
read next Transaction;
}
双重(和三重)检查逻辑 - 它是围绕干扰写的。但它接近你所需要的。
使用词汇文件句柄:
open my $master, "<", $master_file or die "Failed to open master file $master_file ($!)";
open my $trans, "<", $trans_file or die "Failed to open transaction file $trans_file ($!)";
你可以互相阅读。