嘿,我正在研究一个非常基本的解析器.我几乎可以肯定我的正则表达式是正确的,但值似乎并没有存储在我的$1和$2.难道我做错了什么?我只是在寻找改变代码的技巧.谢谢你的建议!此外,我是Perl的新手,所以如果我做错了什么,我希望能够站稳脚跟并养成坚固的习惯.
来自文件的示例行:
Sat 02-August-2008 20:47 - 123.112.3.209 - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;
Run Code Online (Sandbox Code Playgroud)
我只是从时代开始.
foreach my $line (@lines)
{
my $match =~ /\d\d-\w+-\d{4} (\d)(\d):\d\d/;
if( $1 == 0)
{
$times[$2] = $times[$2] + 1;
}
else
{
my $time = $1.$2;
$times[$time] = $times[$time]+ 1;
}
}
print "\n";
for(my $i=0;$i<24;$i++)
{
print "$i: $times[$i]\n";
}
Run Code Online (Sandbox Code Playgroud) 这更像是一个概念问题而不是要解决的编码问题.我们在PHP和Perl中都有许多脚本.
公司周围有大量的MySQL服务器,每个服务器都有大量不同的用户/权限组合.
我想创建一个中央配置文件,可能是纯文本文件,其中包含所有连接数据的列表.每种语言都需要能够读取文件并将其解析为可用的格式.
我想知道任何优选的实现方法.
我有一个大文本文件(大约10 GB),其中包含多个故事.每个故事都以标记开头$$.以下是该文件的示例:
$$
AA This is story 1
BB 345
$$
AA This is story 2
BB 456
Run Code Online (Sandbox Code Playgroud)
我想将此文件拆分为大约250 MB的大小.但是这些故事都不应该分成两个不同的文件.
任何人都可以帮助我使用Unix或Perl代码吗?
使用文件测试操作符时,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" …
我想在Ant下运行 Perl 测试,并以与JUnit Ant 任务生成的格式类似的格式生成 XML 输出。我尝试安装从http://search.cpan.org/dist/TAP-Formatter-JUnit/Tap::Formatter::JUnit下载的模块,并按照README 文件中描述的说明进行操作,安装成功完成。
但运行时prove --formatter Tap::Formatter::JUnit exec.pl,出现以下错误:
Can't locate object method "new" via package "Tap::Formatter::JUnit" at C:/Perl/lib/TAP/Object.pm line 133.
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来使用Perl将文件名收集到列表中.例如,我进入一个包含一百个不同文件名的文件夹,从文本文件到MP3,我想将每个文件名放在一个列表中.我该怎么办?我到处寻找,似乎无法弄明白.我已经到了使用该chdir功能,但我似乎无法读取文件名并打印它们.有人可以帮忙吗?