【发布时间】:2013-03-24 11:06:39
【问题描述】:
我正在使用 Perl WWW::Mechanize 包来获取和处理来自某些网站的数据。通常我的操作方式如下:
-
获取网页
$mech->get("$url"); -
将网页内容保存在一个变量中(顺便说一句,我不确定将这么多文本保存在一个标量中是否是正确的方法,据我所知,它应该用于单个值)
my $list = $mech->content(); -
使用我创建的子例程将变量的内容写入文本文件。 (
writetoFile子例程包含更多功能,例如路径和现有文件验证..)writeToFile("$filename.tmp","$path",$list); 通过创建一个附加文件来处理在上一步中创建的文件中的文本并将处理后的内容保存在那里(然后删除初始临时文件)。
我想知道的是,是否可以在将文本存储到文件之前直接在$list 变量中执行处理?整个过程按预期工作,但我不太喜欢它背后的逻辑,而且效率似乎也有点低,因为我必须多次重写同一个文件。
编辑: 只是为了提供更多关于我在处理变量内容时实际追求的信息。所以在这种情况下,我从网站获取的数据实际上是一个由空行分隔的项目列表,第一行与我无关。所以我在处理这些数据时正在做两件事:
- 删除空 (CRLF) 行
- 如果包含特定文本,则删除第一行。
理想情况下,我想将已处理的列表(没有空格和删除第一行)保存在一个文件中,而不会在途中创建任何其他文件。为了保存文件,我想使用writeToFile sub(我写的),因为它还会验证此类文件是否已经存在(如果文件将在最终处理之前保存 - writeToFile 将始终重写现有文件)。
希望它有意义。
【问题讨论】:
-
当然是。你到底没有管理什么?
-
@Mat 嗨。我的问题似乎是逐行读取变量内的文本并根据某些条件执行处理每一行文本,然后将输出保存在某处..就像我用文件做的一样。使用 I 文件读取每一行,检查每一行并将处理后的输出写入另一个文件。谢谢。
-
这个问题缺少你想要通过逐行解析来完成的细节。我闻到了 XY 问题。
-
@daxim 我在我的问题中添加了一些细节。希望它能让我的问题更清楚。谢谢!