Мое современное мышление: мне нужен определенный модуль, который позволит мне получить доступ к USB-устройству. Кроме того, мне нужна какая-то деамонная вещь, которая будет уведомлять мой скрипт о любом входящем событии USB-соединения. И затем я просто использую некоторое регулярное выражение, чтобы найти файл, который я хочу скопировать, а затем выполнить копирование, возможно, с помощью некоторого модуля копирования файлов.Как автоматически копировать файлы на жесткий диск с USB-устройства при подключении через Perl?
Но я искал CPAN с ключевым словом «USB» только для того, чтобы найти действительно очень мало подходящих модулей, и этот, казалось бы, самый перспективный модуль, который называется Device :: USB, говорит, что он не поддерживает систему Windows. Я запускаю Windows XP SP3, кстати.
Я предполагаю, что такая автоматизация не должна быть слишком сложной с Perl. Но я просто застрял там.
Любые идеи? или любые другие предложения? Спасибо :)
UPDATE
Все не так легко, как и ожидалось. Уверен, у меня есть чему поучиться. Но, основываясь на моих существующих знаниях Perl, мне удалось написать сценарий make-do. Я здесь, чтобы учиться. Пожалуйста, прокомментируйте, где я могу улучшить свой код. Спасибо, как всегда :)
use warnings;
use strict;
use File::Find;
use File::Copy;
my $from = 'I:/'; #Volume letter for USB drive in my OS
my $to = 'E:\Copy-to';
while (1) {
if (-e $from) {
last;
}else{
sleep(30);
}
}
my @files;
find(sub{ push @files, $File::Find::name if /pdf$/}, $from); #Find the PDF files in the USB drive for Copying experiment
for (@files){
copy ($_,$to);
}
Проблема с поиском «USB» заключается в том, что USB принципиально не имеет к этому никакого отношения. Вы получите уведомление вставки из HAL, а не с USB, и вы будете взаимодействовать с файлами через файловую систему, а не USB. – hobbs
@hobbs, спасибо, что рассказал мне об этом. – Mike