Невозможно скопировать несколько файлов в каталог с помощью скрипта Perl

#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