我正在尝试学习 perl,特别是使用 File::Find 模块来搜索图片目录树,以查看是否有任何已经存在的文件名与相机上的文件名匹配。如果文件名在那里,我会假设该文件已经从这台相机传输,不会进一步处理它。如果找不到文件名,我想对该文件采取某种措施。
我使用 find2perl 创建了一个基本结构,它可以用于查找文件。但我似乎无法找到一种方法来判断查找是否失败。File::Find::find 似乎没有返回任何值来采取行动,我不确定如何采取行动,或者使用它正在使用的“&wanted”子目录中的任何返回值。
确定 File::Find::find 是否未能成功找到任何匹配文件的最佳方法是什么?我是否应该使用在程序顶部设置为某个值并且仅在查找成功时才更改的全局标志变量?我想我可以在找到后检查该值,看看它是否已更改(成功)或未更改(未找到)。
有什么想法或建议吗?
这是基本结构:
# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, '/files/multimedia/pictures/');
exit;
sub wanted {
my ($dev,$ino,$mode,$nlink,$uid,$gid);
if ( (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && /^$ARGV[0]\z/si ) {
print("found: $name\n");
}
}