使用XML::Twig,有没有办法获取节点的整个HTML?我不想要节点的文本,而是整个HTML标签和所有.
输入XML
<content> <p>blah blah <b> bla bla </b> </p>
<p> line 2 <i> test </i? </p>
</content>
Run Code Online (Sandbox Code Playgroud)
码
my $twig = new XML::Twig(
TwigRoots => {'content' => 1},
TwigHandlers => $twig_handlers
);
my $twig_handlers = {'count/p' => \&count_ps};
sub count_ps {
my ($twig, $test) = @_;
$Data .= $test->text();
}
Run Code Online (Sandbox Code Playgroud)
$data 应该告诉我整个HTML.
我有一个linux过滤器来从xcode项目中提取包含本地化字符串的所有行,并生成一个排序的唯一条目列表.过滤器工作正常,如下所示.
grep NSLocalized *.m | perl -pe 's/.*NSLocalizedString\((.+?)\,.*/$1/' | sort | uniq
Run Code Online (Sandbox Code Playgroud)
结果是一个看起来像这样的字符串列表
@"string1"
@"string2"
etc
Run Code Online (Sandbox Code Playgroud)
我现在需要做的是识别另一个文本文件中不存在的条目.所以想象我有一个包含的文本文件;
@"string1"
@"string3"
etc
Run Code Online (Sandbox Code Playgroud)
结果将是@"string2"因为它不存在于文件中
为了参数,该文件名为list.txt
我需要添加到我的过滤器中?我敢肯定我可以用grep做到这一点,但我的大脑失败了!
我有一组存储在文本文件中的数据,我现在通过Perl将其放入CSV文件中.现在需要在图表中显示有问题的数据.
这样做有什么建议吗?建议使用XML,但XML无法将数据放入图表本身.
理想情况下会发生这样的情况:数据将从文本文件中解码,放入Excel电子表格并显示为图表,所有这些都包含一位代码,因为其中有许多文本文件包含数据.
Perl,XML,C,C++,C#和VB都可以使用.
使用文件测试操作符时,stat()结果将缓存在中,_因此,如果要执行多个测试,则无需执行更多系统调用.
if (-f $file_) {
say 'readable' if -r _;
say 'writable' if -w _;
}
Run Code Online (Sandbox Code Playgroud)
如果我在a中使用它们given…when,他们会使用_或$_吗?
given ($file) {
when (! -f) {}
when (-r) {say 'readable';continue}
when (-w) {say 'writable';continue}
....
}
Run Code Online (Sandbox Code Playgroud)
我觉得这会使用$_.真的吗?此外,因为given…when没有默认的直通,所以有必要使用continue以查看其他匹配.
可能这种情况可以通过ifs 更好地解决,并且使用比使用该given…when方法更少的类型.但是,given…when在重构软件时,看起来是否合适是很诱人的.;-)
我按照Email::Sender和Email::MIME中的示例进行操作,看起来不错,直到您尝试打开 PDF。然后很明显它的大小比原来的要小并且不知何故损坏了。我的脚本或多或少是出于测试目的而给出的示例的模板副本,但我担心 MIME 内容在这里不起作用。
use strict;
use warnings;
use Data::Dumper;
use IO::All ;
use Email::Simple;
use Email::Simple::Creator;
use Email::MIME;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP;
# assemble the parts
my @parts = (
Email::MIME->create(
attributes => {
filename => "report.pdf",
content_type => "application/pdf",
encoding => "quoted-printable",
name => "report.pdf",
},
body => io("report.pdf")->all
),
Email::MIME->create(
attributes => {
content_type => "text/plain",
disposition => "attachment",
charset => "US-ASCII",
},
body => "Hello there!",
),
);
# assemble parts into …Run Code Online (Sandbox Code Playgroud) 我刚安装了SL4A来测试我的摩托罗拉里程碑上的Perl.有没有办法安装模块?我需要LWP :: Simple.
我正在做一些测试,我有很多文件需要进行数据分析.我们的文件有一个命名约定,但有时会有人添加一些文件名.我正在寻找一种方法来寻找名称的"核心",然后保存整个文件名.
例如,我想找WIRA_Rabcd_RT,但有人可能已将文件名保存为RED_GREEN_BLUE_WIRA_Rabcd_RT.txt,所以我的文件夹看起来像这样:
RED_GREEN_BLUE_WIRB_Rabcd_RT.txt
RED_GREEN_BLUE_WIRC_Rabcd_RT.txt
RED_GREEN_BLUE_WIRA_Rabcd_RT.txt ? I want to find this file, and open it.
RED_GREEN_BLUE_WIRF_Rabcd_RT.txt
RED_GREEN_BLUE_WIRG_Rabcd_RT.txt
RED_GREEN_BLUE_WIRT_Rabcd_RT.txt
RED_GREEN_BLUE_WIRW_Rabcd_RT.txt
RED_GREEN_BLUE_WIRQ_Rabcd_RT.txt
Run Code Online (Sandbox Code Playgroud) 我是Perl的新手并尝试编写文本文件.我可以将文本文件写入现有目录没问题,但最终我希望能够创建自己的目录.
我将从我的课程作品网站下载文件,我想将文件放在以课程命名的文件夹中.我不想事先手动为每个课程创建一个文件夹,我也希望最终与其他人共享该脚本,所以我需要一种方法来创建目录并根据HTML中的课程名称命名它们.
到目前为止,我已经能够使这个工作:
use strict;
my $content = "Hello world";
open MYFILE, ">C:/PerlFiles/test.txt";
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
test.txt不存在,但是C:/PerlFiles/并且假定打字>允许我创建文件,很棒.
但是,以下内容不起作用:
use strict;
my $content = "area = pi*r^2";
open MYFILE, ">C:/PerlFiles/math_class/circle.txt";
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
该目录C:/PerlFiles/math_class/不存在.
我也试过,sysopen但是在添加标志时出现错误:
use strict;
my $content = "area = pi*r^2";
sysopen (MYFILE, ">C:/PerlFiles/math_class/circle.txt", O_CREAT);
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
我从Perl Cookbook第7.1章得到了这个想法.打开文件.它不起作用,我收到错误消息Bareword "O_CREAT" not allowed while "strict subs" …
我试图使用Perl 复制我的C#/ XPath代码在Linux上的作用.我复制并粘贴了Perl和XML中的例8-6中的代码.如果我理解正确,我应该能够运行该Perl代码,将此代码放在终端中
xmlPerl.pl mydatafile.xml "/inventory/category/item/name"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行Perl文件时,它不起作用.这是错误:
[root@Perl ~]# perl xmlPerl.pl
Can't locate XML/XPath.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at xmlPerl.pl line 3.
BEGIN failed--compilation aborted at xmlPerl.pl line 3.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我认为它与我的代码开头的XML和XPath名称有关.我是否需要安装一些东西才能使用XPath框架?我在RedHat 5.5上运行.