Perl搜索函数
这个问题解决了。非常感谢。Perl搜索函数,perl,seek,Perl,Seek,这个问题解决了。非常感谢。 我的问题和我正在使用的解决方案如下所述。 问题: open IN, "<./test.txt"; seek(IN,10,0); read IN, $temp, 5; seek(IN,20,0); close(IN); 打开,“开始之前 你要求我们做的假设毫无意义。第一个字节在零位。总是 它被称为“文件句柄”(因为它允许您保留文件),而不是“文件句柄”(因为它不处理任何东西) 如果使用常量SEEK_SET、SEEK_CUR和SEEK_END而不是0、1和2
我的问题和我正在使用的解决方案如下所述。
问题:
open IN, "<./test.txt";
seek(IN,10,0);
read IN, $temp, 5;
seek(IN,20,0);
close(IN);
打开,“开始之前
- 你要求我们做的假设毫无意义。第一个字节在零位。总是
- 它被称为“文件句柄”(因为它允许您保留文件),而不是“文件句柄”(因为它不处理任何东西)
如果使用常量SEEK_SET、SEEK_CUR和SEEK_END而不是0、1和2,则会更清楚
你的代码是
use Fcntl qw( SEEK_SET );
open IN, "<./test.txt";
seek(IN,10,SEEK_SET);
read IN, $temp, 5;
seek(IN,20,SEEK_SET);
close(IN);
如果您想相对于当前职位进行搜索,可以使用seek\u CUR
+-------------------------- 0: Initially.
| +---------------- 10: After seek($fh, 10, SEEK_CUR).
| | +----------- 15: After reading "KLMNO".
| | | +- 25: After seek($fh, 10, SEEK_CUR).
| | | |
v v v v
file: ABCDEFGHIJKLMNOPQRSTUVWXYZ
indexes: 01234567890123456789012345
非常感谢,这非常有帮助。@“使用Fcntl qw(:seek)代码>不在搜索文档中。它不是必需的,我不接受额外的、不可记忆的代码行和符号是好的,即使它们在您看来更有序。这就是你投反对票的原因。你给出的理由正是使用适当常数的理由。如果出现错误,必须记住不可记忆的魔法数字。这些常量记录在seek
文档中。具体地说,就是将号码传递到的系统调用的文档。事实上,这些文件中甚至没有提到与这些常量对应的任何数字。这就提出了一个问题:Perl文档中提到的神奇数字是否总是正确的<代码>$position=tell(IN);seek(在$target_byte-$position中,seek_CUR)
是一种奇怪的查找方式(在$target\u字节中,seek\u SET)代码>
+-------------------------- 0: Initially.
| +---------------- 10: After seek($fh, 10, SEEK_SET).
| | +----------- 15: After reading "KLMNO".
| | | +------ 20: After seek($fh, 20, SEEK_SET).
| | | |
v v v v
file: ABCDEFGHIJKLMNOPQRSTUVWXYZ
indexes: 01234567890123456789012345
+-------------------------- 0: Initially.
| +---------------- 10: After seek($fh, 10, SEEK_CUR).
| | +----------- 15: After reading "KLMNO".
| | | +- 25: After seek($fh, 10, SEEK_CUR).
| | | |
v v v v
file: ABCDEFGHIJKLMNOPQRSTUVWXYZ
indexes: 01234567890123456789012345