我使用Perl WWW::Mechanize
包来从一些网站获取和处理数据。通常我的行动方式如下:在写入文件之前处理变量中的文本
取网页
$mech->get("$url");
保存在一个变量(BTW的,我不知道这是否是正确的方式对网页内容保存标中的文本的这个量的,据我所知,应该是用于单个值)
my $list = $mech->content();
使用我创建的子例程将变量的内容写入文本文件。 (该
writetoFile
子程序包括一些更多的功能,如路径和现有的文件验证..)writeToFile("$filename.tmp","$path",$list);
通过建立一个附加文件的处理在先前步骤中创建的文件的文本和保存处理的内容有(然后删除最初的临时文件)。
我想知道什么,是是否有可能存储在文件中的文本之前执行的处理,直接在$list
变量里面?整个过程如预期的那样工作,但是我并不喜欢它背后的逻辑,而且它也有点低效,因为我必须多次重写相同的文件。
编辑: 只是为了给我更多的信息,当我处理变量的内容后我实际上是什么。因此,在这种情况下,我从网站获取的数据实际上是由空行分隔的项目列表,第一行与我无关。所以我在做什么,而处理这个数据是两两件事:
- 取出空(CRLF)行
- 删除第一行,如果它包括一个特定的文本。
理想情况下,我希望将已处理的列表(未删除空格和第一行)保存在文件中,而不会在途中创建任何其他文件。为了保存文件,我想用writeToFile
子(我写),因为它也对这样的文件是否已经存在执行验证(如果一个文件将在最终处理前被保存 - 在writeToFile
总是会改写现有的文件)。
,真希望是有道理的。
当然是。你究竟在管理什么? – Mat 2013-03-24 11:10:08
@Mat嗨。我的问题似乎是逐行读取可变内部的文本,并根据某些条件执行处理每行文本,然后将输出保存在某处..就像我用文件做的那样。用I文件,我读取每一行,检查每一行,并将处理后的输出写入另一个文件。谢谢。 – 2013-03-24 11:16:23
看看这里的答案:http://stackoverflow.com/questions/1445426/how-can-i-process-a-multi-line-string-one-line-at-a-time-in-perl-with -use-strict,特别是http://stackoverflow.com/a/1445732/635608 – Mat 2013-03-24 11:19:43