我正在尝试根据开始和结束字符串将文本页面分成块。我看到了关于如何做到这一点的帖子,但由于某种原因(keybd和主席之间可能有问题),我没有得到任何返回的行。
这是我到目前为止:
open INPUT, "in.file" || die "Can't find file\n";
open OUT, ">log.out" || die "Can't opne file\n";
$start="\/\*";
$stop= "\/\=";
$found=0;
while (<INPUT>)
{
if (/$start/ .. /$stop/)
{
next if /$start/ || /$stop/;
if ($found == 0)
{
print "NOT FOUND\n";
}
else
{
print "FOUND\n";
}
}
}
我们将此作为我正在阅读的内容的一个例子:
/ *批处理1 - abc ... .. 。 / =
/ *批处理2 - jkl ... .. 。 / =
/ *批处理3 - xyz ... .. 。 / =
在有人评论之前,是的,我是一般的编程新手,所以在这里为简单的错误道歉。我确实上线并检查样品,但无济于事。如果这是一个基本问题,再次道歉。
答案 0 :(得分:2)
您在第一行中有一个操作顺序问题(以及使用全局文件句柄而不是本地词法)。将这些陈述改为:
use strict;
use warnings;
open my $input, 'in.file' or die "Can't find file\n";
open my $out, '>', 'log.out' or die "Can't open file\n";
此外,您正在检查$found
变量,但从未设置它(不要忘记在每次循环迭代的顶部再次清除它)。
否则,您的代码看起来没问题,尽管您可以简化您的正则表达式以提高可读性:
my $start = '/*';
my $end = '/=';
# ... and inside the loop:
$found = 1 if /\Q$start\E/ .. /\Q$stop\E/;