perl 相关问题

Perl是一种过程的,高级的,通用的动态编程语言,以其对正则表达式和字符串解析功能的本机支持而闻名。有关Perl的问题,请使用此标记。对于与新(但相关)语言“Perl 6”相关的内容,请使用perl6标记。对于其他语言的Perl样式正则表达式,请使用regex标记,如果它们基于PCRE库,则使用pcre标记。

使用perl单行,如何从文件中删除第一行中所有列名周围的“

使用perl single liner,如何从文件中删除第一行中所有列名周围的“。 无法仅删除列名周围的双引号。 输入文件 “FNAME”,“LNAME”...

回答 1 投票 0

如何在 Perl 中删除符合特定条件的列?

我有下表 头 v1 v2 v3 v4 v5 v6 stn2 1 4 1 1 4 2 stn2 1 4 1 1 4 2 stn3 1 4 1 1 4 2 stn4 1 4 1 1 4 3 stn4 1 4 1 1 4 ...

回答 1 投票 0

z/OS 生成零长度侧甲板文件,不显示警告

我正在尝试在 z/OS 上编译可执行文件。 最后一步因一些未定义的符号而失败。 大概这是因为它之前生成 .so 的步骤也生成了零

回答 1 投票 0

如何使用 Web::Scraper 抓取以下内容?

这个问题与How to Parse this HTML with Web::Scraper? 不同但相关。 我必须使用 Web::Scraper 抓取页面,其中 HTML 可能会略有变化。有时可以是 这个问题与 How to Parse this HTML with Web::Scraper?. 不同但相关 我必须使用 Web::Scraper 抓取页面,其中 HTML 可能会略有变化。有时也可以 <div> <p> <strong>TITLE1</strong> <br> DESCRIPTION1 </p> <p> <strong>TITLE2</strong> <br> DESCRIPTION2 </p> <p> <strong>TITLE3</strong> <br> DESCRIPTION3 </p> </div> 我用 Web::Scraper 使用以下代码提取 my $test = scraper { process 'div p', 'test[]' => scraper { process 'p strong', 'name' => 'TEXT'; process '//p/text()', 'desc' => [ 'TEXT', sub { s/^\s+|\s+$//g } ]; }; }; 但有时它包含以下 HTML(请注意,每个标题和描述不再用 <p> 分隔)。 <div> <p> <strong>TITLE1</strong> <br> DESCRIPTION1 <strong>TITLE2</strong> <br> DESCRIPTION2 <strong>TITLE3</strong> <br> DESCRIPTION3 </p> </div> 如何将上面的 HTML 抓取到 test => [ { desc => "DESCRIPTION1 ", name => "TITLE1" }, { desc => "DESCRIPTION2 ", name => "TITLE2" }, { desc => "DESCRIPTION3 ", name => "TITLE3" }, ] 我尝试修改上面的代码,但我无法弄清楚使用什么 HTML 来“拆分”唯一的标题和描述对。 我从未使用过 WebScraper,但它的行为似乎很糟糕或者很奇怪。 以下 XPath 表达式或多或少应该适用于这两种情况(需要进行小的调整): //div//strong/text() //div//br/following-sibling::text() 将它们插入 xmllint (libxml2) 时: tmp >xmllint --html --shell a.html / > cat / ------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body> <div> <p> <strong>TITLE1</strong> <br> DESCRIPTION1 </p> <p> <strong>TITLE2</strong> <br> DESCRIPTION2 </p> <p> <strong>TITLE3</strong> <br> DESCRIPTION3 </p> </div> </body></html> / > xpath //div//strong/text() Object is a Node Set : Set contains 3 nodes: 1 TEXT content=TITLE1 2 TEXT content=TITLE2 3 TEXT content=TITLE3 / > xpath //div//br/following-sibling::text() Object is a Node Set : Set contains 3 nodes: 1 TEXT content= DESCRIPTION1 2 TEXT content= DESCRIPTION2 3 TEXT content= DESCRIPTION3 / > load b.html / > cat / ------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><div> <p> <strong>TITLE1</strong> <br> DESCRIPTION1 <strong>TITLE2</strong> <br> DESCRIPTION2 <strong>TITLE3</strong> <br> DESCRIPTION3 </p> </div></body></html> / > xpath //div//strong/text() Object is a Node Set : Set contains 3 nodes: 1 TEXT content=TITLE1 2 TEXT content=TITLE2 3 TEXT content=TITLE3 / > xpath //div//br/following-sibling::text() Object is a Node Set : Set contains 5 nodes: 1 TEXT content= DESCRIPTION1 2 TEXT content= 3 TEXT content= DESCRIPTION2 4 TEXT content= 5 TEXT content= DESCRIPTION3 当您将这些的各种版本插入 WebScraper 时,它们不起作用。 process '//div', 'test[]' => scraper { process '//strong', 'name' => 'TEXT'; process '//br/following-sibling::text()', 'desc' => 'TEXT'; }; 结果: /tmp >for f in a b; do perl bs.pl file:///tmp/$f.html; done { test => [{ desc => " DESCRIPTION1 ", name => "TITLE1" }] } { test => [{ desc => " DESCRIPTION1 ", name => "TITLE1" }] } process '//div', 'test[]' => scraper { process '//div//strong', 'name' => 'TEXT'; process '//div//br/following-sibling::text()', 'desc' => 'TEXT'; }; 结果: /tmp >for f in a b; do perl bs.pl file:///tmp/$f.html; done { test => [{ desc => " DESCRIPTION1 ", name => "TITLE1" }] } { test => [{ desc => " DESCRIPTION1 ", name => "TITLE1" }] } 即使是最基本的情况: process 'div', 'test[]' => scraper { process 'strong', 'name' => 'TEXT'; }; 结果: /tmp >for f in a b; do perl bs.pl file:///tmp/$f.html; done { test => [{ name => "TITLE1" }] } { test => [{ name => "TITLE1" }] } 即使你通过 use Web::Scraper::LibXML 告诉它使用 libxml2 -什么也没有! 为了确保我不会发疯,我尝试使用 Ruby 的 Nokogiri: /tmp >for f in a b; do ruby -rnokogiri -rpp -e'pp Nokogiri::HTML(File.read(ARGV[0])).css("div p strong").map &:text' $f.html; done ["TITLE1", "TITLE2", "TITLE3"] ["TITLE1", "TITLE2", "TITLE3"] 我缺少什么。 我想我已经解决了。我不确定这是否是最好的方法,但它似乎可以处理这两种情况。 my $test = scraper { process '//div', 'test' => scraper { process '//div//strong//text()', 'name[]' => 'TEXT'; process '//p/text()','desc[]' => ['TEXT', sub { s/^\s+|\s+$//g} ]; } }; my $res = $test->scrape(\$html); #get the names and descriptions my @keys = @{$res->{test}->{name}}; my @values = @{$res->{test}->{desc}}; #merge two arrays into hash my %hash; @hash{@keys} = @values;

回答 2 投票 0

在 Windows 上安装 Perl 的 cURL 模块

我的 Windows 机器上有 ActivePerl 5.14.2。我一直在尝试安装 LWP cURL 模块。我已经在我的机器上安装了 libcurl-dev 库和 GCC。 我也明白LW...

回答 2 投票 0

Perl 最后捕获匹配变量

我对 Perl 比较陌生,通过最近的学习,我最终得到了一些脚本并偶然发现了这个正则表达式 $+ 表示最后一个括号与最后一个搜索模式匹配。这很有用...

回答 3 投票 0

perl 脚本递归列出目录中的所有文件名

我已经编写了以下 perl 脚本,但问题是它总是进入其他部分并且报告不是文件。我在输入中给出的目录中确实有文件。我在这里做错了什么? ...

回答 2 投票 0

如何遍历一个目录下的所有文件;如果有子目录,我也想遍历子目录中的文件

opendir(DIR,"$pwd") 或死“无法打开 $pwd ”; 我的@files = readdir(DIR); 关闭(DIR); foreach 我的 $file (@files) { 接下来 if ($file!~ /\.txt$/i); 我的 $mtime = (stat($fi...

回答 6 投票 0

Sonoma 上 Node-RED 中 Perl 模块 `File::Glob` 的子例程 `bsd_glob` 的不同行为令人困惑

前几天我将我的 mac mini(这是我娱乐中心的一部分)更新到了索诺玛。 早就该这么做了。 我想以前还是在 High Sierra。 我在该 com 上有一个 Node-RED 实例...

回答 1 投票 0

如何高效地对大文件进行两级排序?

我有一个非常大的文件,超过100GB(数十亿行),我想在内存有限的unix系统上尽快进行两级排序。这将是一个大的一步

回答 4 投票 0

perl cgi、awstats 工具及修改

在 AWStats 中,它会在 ./data 文件夹中创建一些日志文件。 我想知道哪个脚本创建这些日志文件?我的目的是让自己不再被跟踪,因为我是该网站的建设者。

回答 1 投票 0

如何从另一个脚本调用已经运行的 Perl 进程?

问题: scriptA.cgi 处于无限循环中并处理 Flash 客户端的打开套接字。 scriptB.cgi 从网络调用,执行它需要执行的操作,然后需要通知 scriptA 来...

回答 5 投票 0

Perl IO::文件因错误“无法在 script.pl 行 LINE 上使用未定义的值作为符号引用”而死亡 - 无法写入文件

尝试打开文件句柄以写入文本,但脚本始终失败并出现错误: 无法在 C:/Users/USER/Documents/script.pl 第 207 行使用未定义的值作为符号引用,...

回答 1 投票 0

用 Perl 编写守护进程

我正在用 Perl 为时事通讯编写一个守护进程。 该守护进程将在服务器上 24/7 运行。它几乎始终与 postgresql 数据库保持活动连接。 我没有那么多

回答 3 投票 0

修改 .xlsx 文件(Excel 2007 及更高版本)

我使用 Spreadsheet::ParseExcel::SaveParser 成功解析了一个 xls 文件,并使用 Spreadsheet::WriteExcel 对其进行了修改。 然而,使用 xlsx 文件是完全不同的事情。 我正在努力...

回答 4 投票 0

Perl,比较 2 个哈希值,列出所有键和所有值,即使它们不同

这是我的情况: %h1 = { 'a' => 1, 'b' => 3, 'c' => 10, “x”=> 12 } %h2 = { 'd' => 3, 'f' => 5, 'a' => 10, 'x' => 0,5 } 我想要...

回答 3 投票 0

在 Perl 中从数组中删除值的最快方法是什么?

数组有很多数据,我需要删除两个元素。 下面是我正在使用的代码片段, 我的@array = (1,2,3,4,5,5,6,5,4,9); 我的 $element_omited = 5; @array = grep { $_ != $element_omi...

回答 15 投票 0

系统 perls 中 ithread 支持有多广泛?

我正在考虑在最终用于 CPAN 的模块中使用线程 (ithreads)。是否有任何资源我可以查看当前使用 useithreads=define by

回答 1 投票 0

Perl 脚本,用于根据单独文本文件中的值查找和替换 XML 中的属性

我拼凑了一个 Perl 脚本,将特定标签的特定属性替换为我需要的内容。脚本如下... #!/usr/bin/env perl 使用严格; 使用警告; 使用 X...

回答 1 投票 0

perl v5.24 中的 ${^MATCH} 和 /p 修饰符

perlre 说: p 保留匹配的字符串,使得 ${^PREMATCH} 、 ${^MATCH} 和 ${^POSTMATCH} 匹配后即可使用。 在 Perl 5.20 及更高版本中,这被忽略。 D...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.