Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl一行程序,打印文件名作为输出的一部分_Regex_Perl_Date - Fatal编程技术网

Regex Perl一行程序,打印文件名作为输出的一部分

Regex Perl一行程序,打印文件名作为输出的一部分,regex,perl,date,Regex,Perl,Date,大约一个月前,我发布了一篇关于如何打印文件列表以及这些文件中出现的所有正则表达式的文章。其目的是获得如下文件: file1 A12345 file2 A12399 file2 A12599 file3 A11223 等等 在Miller和anttix的帮助下(再次感谢!),表达方式是: perl -lne 'print "$ARGV $1" while(/\<myxmltag>(..............)<\/myxmltag>

大约一个月前,我发布了一篇关于如何打印文件列表以及这些文件中出现的所有正则表达式的文章。其目的是获得如下文件:

    file1 A12345
    file2 A12399
    file2 A12599
    file3 A11223
等等

在Miller和anttix的帮助下(再次感谢!),表达方式是:

    perl -lne 'print "$ARGV $1" while(/\<myxmltag>(..............)<\/myxmltag>/g)' *.XML >  /home/myuser/myfiles.txt
我环顾了一下四周,却没能找到在一行中如何做到这一点的方法。大量的例子涉及完整的Perl程序,包括
opendir
和变量等;但作为一个已经20年没有编写Perl的人,我正试图做到极简

我试图添加
$ARGV[9]
@ARGV[9]
和类似的内容,但没有一个成功


关于尝试什么有什么建议吗?

假设您真的想坚持使用单行程序,并且想要
修改时间,请尝试以下方法:

perl -MTime::localtime -lne 'print "$ARGV  $1 ". ctime((stat "$ARGV" )[9]) while(/\<myxmltag>(..............)<\/myxmltag>/g)' *

如果你为了简单而坚持一行,那么你就被误导了。一个合适的程序可读性更高,调试和修改也更简单。单行程序通常没有缩进的好处来揭示其结构,也没有
使用strict
使用warnings
来帮助您避免琐碎的错误在linux中没有创建日期这样的事情。有更改时间、修改时间和访问时间。同样,博罗丁所说的,莫福是正确的。但是,如果自创建以来没有人更改所有者、组或其他文件信息(存储在inode中),则更改时间将为创建时间。因此,更改时间可能就足够了。谢谢-是的,“创建日期”并不太精确,但修改时间已经足够接近了,因为这是创建文件的时间。我一直在按照mpapec的建议使用stat,但还没能让它起作用,要么它给出了一个错误,要么它只是打印“stat whatever”,例如,“perl-lne”print(stat ARGV)*.txt | head”给了我一堆长串的数字(可能是系统文件ID?)。我会检查下面的建议。谢谢!第一个版本(使用-MTime)工作得非常好。出于某种原因,第二个选项报告了所有内容的相同日期值(我很确定这些文件不是1969年创建的,哈哈)。我也很确定我做错了什么!尽管如此,了解这两种变体还是让我在紧急的截止日期前有了一些开始,也有了更多的了解。再次感谢!!很抱歉固定的。谢谢你的提醒!
perl -MTime::localtime -lne 'print "$ARGV  $1 ". ctime((stat "$ARGV" )[9]) while(/\<myxmltag>(..............)<\/myxmltag>/g)' *
   perl -MPOSIX -lne 'print "$ARGV $1 " . strftime("%d/%m/%y", localtime((stat "$ARGV")[9])) while(/\<myxmltag>(..............)<\/myxmltag>/g)' *