Вероятно, это не работает, поскольку вы не заменяете такие вещи, как $ZIP_DEBUG
их эквивалентными действительными значениями. В Perl они будут заменены значениями переменных перед передачей в вызов system
.
Если вы напечатаете эти переменные Perl (или даже всю команду) перед выполнением этого вызова system
, вы обнаружите те реальные значения, которые вам нужно использовать. Вы можете использовать следующую стенограмму для руководства:
$ perl -e '
> $ZIP_DEBUG = "xyzzy";
> $include = "inc_files";
> $exclude = "exc_files";
> print "zip $ZIP_DEBUG -r -9 itvlib.zip $include $exclude";
> '
zip xyzzy -r -9 itvlib.zip inc_files exc_files
Подробнее о том, как работает system
, см. здесь . Для получения подробной информации о том, что zip
должно функционировать, вы должны просто запустить:
man zip
из оболочки командной строки (при условии, что вы работаете в Linux или его братьях). Если вместо этого вы работаете в другой операционной системе (например, Windows), вам нужно будет выяснить, как получить параметры zip. Это может быть таким же простым, как zip -?
из zip -h
, но нет гарантии, что оно будет работать.
Если это то же самое, что Info-ZIP zip
под Linux (и это может быть, если у вас есть опции -9
и -r
и ваша переменная exclude
начинается с -x
), тогда zip -h
даст вам базовую помощь и zip -h2
даст вам гораздо больше.