小编dax*_*xim的帖子

简单的Perl正则表达式解析器

嘿,我正在研究一个非常基本的解析器.我几乎可以肯定我的正则表达式是正确的,但值似乎并没有存储在我的$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)

regex perl parsing

3
推荐指数
1
解决办法
379
查看次数

PHP和Perl共享的一个好的纯文本配置文件格式是什么?

这更像是一个概念问题而不是要解决的编码问题.我们在PHP和Perl中都有许多脚本.

公司周围有大量的MySQL服务器,每个服务器都有大量不同的用户/权限组合.

我想创建一个中央配置文件,可能是纯文本文件,其中包含所有连接数据的列表.每种语言都需要能够读取文件并将其解析为可用的格式.

我想知道任何优选的实现方法.

php perl configuration configuration-files

3
推荐指数
1
解决办法
797
查看次数

如何在不截断记录的情况下将大型文本文件拆分为大小均匀的文件?

我有一个大文本文件(大约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代码吗?

unix perl

3
推荐指数
1
解决办法
3908
查看次数

切换时,文件测试在给定的...中使用`$ _`或`_`?

使用文件测试操作符时,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在重构软件时,看起来是否合适是很诱人的.;-)

perl

3
推荐指数
1
解决办法
178
查看次数

为什么 PDF 在使用 Email::MIME 通过 SMTP 邮寄后会损坏/无法读取?

我按照Email::SenderEmail::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)

email perl mime smtp multipart

3
推荐指数
1
解决办法
2921
查看次数

如何在Android脚本层(SL4A)上安装Perl模块?

我刚安装了SL4A来测试我的摩托罗拉里程碑上的Perl.有没有办法安装模块?我需要LWP :: Simple.

perl module sl4a

3
推荐指数
1
解决办法
2827
查看次数

如何查找名称可能超过预期名称的文件?

我正在做一些测试,我有很多文件需要进行数据分析.我们的文件有一个命名约定,但有时会有人添加一些文件名.我正在寻找一种方法来寻找名称的"核心",然后保存整个文件名.

例如,我想找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)

regex perl search file

3
推荐指数
1
解决办法
110
查看次数

如何在Perl中创建目录?

我是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 Cookbook7.1章得到了这个想法.打开文件.它不起作用,我收到错误消息Bareword "O_CREAT" not allowed while "strict subs" …

perl file-io

3
推荐指数
2
解决办法
3360
查看次数

Perl Tap-Formatter-Junit 问题

我想在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 perl-module

2
推荐指数
1
解决办法
1028
查看次数

如何将文件夹中的文件名收集到列表中?

我正在寻找一种方法来使用Perl将文件名收集到列表中.例如,我进入一个包含一百个不同文件名的文件夹,从文本文件到MP3,我想将每个文件名放在一个列表中.我该怎么办?我到处寻找,似乎无法弄明白.我已经到了使用该chdir功能,但我似乎无法读取文件名并打印它们.有人可以帮忙吗?

perl file

2
推荐指数
2
解决办法
268
查看次数