Perl比较

时间:2013-05-29 17:30:02

标签: linux perl comparison

我正在Perl中创建一个脚本,它将从相机拍摄照片并检查是否有任何新照片被拍摄。在Ubuntu我使用gphoto2搜索相机的照片然后下载任何新图片。我已经看到几个在线脚本接近满足我的需求,但我遇到了每个gphoto2请求后需要重置USB端口的问题。我现在唯一的问题是,如何将下面的输出保存到我​​可以比较的数组或文件中?

There is no file in folder '/store_00010001/DCIM/112EOS5D'.
There is no file in folder '/store_00010001/DCIM/113EOS5D'.
There are 3 files in folder '/store_00010001/DCIM/114EOS5D'.
#1     IMG_0001.JPG               rd   347 KB image/jpeg
#2     IMG_0002.JPG               rd   342 KB image/jpeg
#3     IMG_0003.JPG               rd   336 KB image/jpeg
There is no file in folder '/store_00010001/MISC'.

到这个

There is no file in folder '/store_00010001/DCIM/112EOS5D'.
There is no file in folder '/store_00010001/DCIM/113EOS5D'.
There are 5 files in folder '/store_00010001/DCIM/114EOS5D'.
#1     IMG_0001.JPG               rd   347 KB image/jpeg
#2     IMG_0002.JPG               rd   342 KB image/jpeg
#3     IMG_0003.JPG               rd   336 KB image/jpeg
#4     IMG_0004.JPG               rd   348 KB image/jpeg
#5     IMG_0005.JPG               rd   342 KB image/jpeg
There is no file in folder '/store_00010001/MISC'.

以下是产生代码的原因。 gphoto2 --list-files给出了输出,而./reset是一个简单的c代码,可以重置usb端口,这样gphoto2可以做到这一点。

sub main {
    while (1) {
    system("gphoto2 --list-files");
    system("./reset /dev/bus/usb/003/021");
    sleep 5;
     }
 }

1 个答案:

答案 0 :(得分:0)

听起来我正在使用一些c代码来生成输出然后你想以某种方式将输出转换为Perl脚本,这样你就可以将它与上次代码运行时的输出进行比较以了解哪个文件是新的。

执行此操作的一种方法是将c代码的输出传递到文本文件中,然后让c代码运行一个Perl脚本,该脚本将从上次运行脚本时加载图像文件名的数组,加载刚刚创建的c输出文件,比较文件以查看哪些是新文件,然后执行您想要对新文件执行的操作。在Perl脚本的末尾,您必须修改图像文件名的数组,以便在下次运行Perl脚本时使用它,以进行比较。

您可以使用正则表达式从输出中提取文件名,然后只进行数组比较。