#perl #bash
#perl #bash
Вопрос:
Одно странное поведение, которое я наблюдаю — в скрипте perl я проверил, существует ли каталог или нет, если он существует — он копирует файл в этот каталог, если нет — тогда создается каталог, за которым следует копия файла
Когда я иду и проверяю файл вручную, файл присутствует . но когда я снова запускаю тот же скрипт, чтобы скопировать другой файл, используя тот же процесс, что и выше, я вижу, что предыдущие файлы отсутствуют. Для подтверждения я выполнил чтение каталога в скрипте, в нем говорилось, что каталог пуст.
Может кто-нибудь, пожалуйста, помочь мне в понимании
Пожалуйста, найдите ниже код :
if (-d "/home/foo") {
print "the directory is already created n";
$i=0;
opendir(DIR, "/home/foo") or die "Cant open /home/foo: $!n";
@list = readdir(DIR);
foreach $line(@list) {
unless ($line =~ /^[.][.]?z/) {
$i ;
}
}
if ($i != 0) { print "There is Stuff in here!"; }
else { print "This Dir is Empty!"; }
closedir(DIR);
}
else {
amp;runcond("mkdir /home/foo");
}
`cp $file /home/foo`; #Copying a file $file in the directory
Комментарии:
1.
/^[.][.]?z/
==/^.{1,2}$/
. Его гораздо удобнее читать.if ($i != 0)
==if ($i)
2. может быть
z
в вашем регулярном выражении3.
my $bool = grep /^..?z/, readdir(DIR);
4. совершенно не в цикле: зачем реализовывать
bash copy
в коде, когда есть команда копирования perl ?
Ответ №1:
`cp $file /home/foo`;
Вы не определили $file