Size: a a a

2020 April 06

SL

Sergey Lobanov in Modern::Perl
Alexandr Evstigneev
надо глянуть, не помню навскидку. Аннтация точно должна работать
куда её вписать?
источник

AE

Alexandr Evstigneev in Modern::Perl
Sergey Lobanov
куда её вписать?
источник

AE

Alexandr Evstigneev in Modern::Perl
можешь декларацию хелпера проаннотировать
источник

AE

Alexandr Evstigneev in Modern::Perl
И лучше ишую завести про автоматический резолв
источник

ММ

Максим Максимов in Modern::Perl
кто сталкивался с распаковкой запароленых zip архивов ?
источник

ММ

Максим Максимов in Modern::Perl
Есть ли какой-то годный модуль?
источник

ММ

Максим Максимов in Modern::Perl
или так колбасить:
   system("unzip -L -P $password -n $zipfile  -d $outputdir");

   my $retcode = ($? >> 8);

   if ($retcode) {
       ## abnormal failure
       die "unzip returned abnormal exit code $retcode";
   }
источник

О

Оскар in Modern::Perl
Archive::Zip?
источник

ММ

Максим Максимов in Modern::Perl
Оскар
Archive::Zip?
The Archive::Zip module does not currently create or extract encrypted members.
источник

ММ

Максим Максимов in Modern::Perl
из доки на него
источник

О

Оскар in Modern::Perl
$ echo hi there > file.txt
$ zip -e file.zip file.txt
Enter password:
Verify password:
 adding: file.txt (stored 0%)
$ perl -MArchive::Zip -E '$z = Archive::Zip->new; $z->read("file.zip"); $m = $z->memberNamed("file.txt"); $m->password("secret"); say $m->contents;'
hi there
0

$ perl -MArchive::Zip -E 'say $Archive::Zip::VERSION'
1.65
источник

AP

Anton Petrusevich in Modern::Perl
Максим Максимов
или так колбасить:
   system("unzip -L -P $password -n $zipfile  -d $outputdir");

   my $retcode = ($? >> 8);

   if ($retcode) {
       ## abnormal failure
       die "unzip returned abnormal exit code $retcode";
   }
через вызов внешних утилит я помню делал, но терминал настраивать надо было
источник

AP

Anton Petrusevich in Modern::Perl
Оскар
$ echo hi there > file.txt
$ zip -e file.zip file.txt
Enter password:
Verify password:
 adding: file.txt (stored 0%)
$ perl -MArchive::Zip -E '$z = Archive::Zip->new; $z->read("file.zip"); $m = $z->memberNamed("file.txt"); $m->password("secret"); say $m->contents;'
hi there
0

$ perl -MArchive::Zip -E 'say $Archive::Zip::VERSION'
1.65
может что-то изменилось за три года. раньше нельзя было
источник

ММ

Максим Максимов in Modern::Perl
Оскар
$ echo hi there > file.txt
$ zip -e file.zip file.txt
Enter password:
Verify password:
 adding: file.txt (stored 0%)
$ perl -MArchive::Zip -E '$z = Archive::Zip->new; $z->read("file.zip"); $m = $z->memberNamed("file.txt"); $m->password("secret"); say $m->contents;'
hi there
0

$ perl -MArchive::Zip -E 'say $Archive::Zip::VERSION'
1.65
может версия старая, пойду посмотрю что есть из обновлений
источник

AP

Anton Petrusevich in Modern::Perl
Оскар
$ echo hi there > file.txt
$ zip -e file.zip file.txt
Enter password:
Verify password:
 adding: file.txt (stored 0%)
$ perl -MArchive::Zip -E '$z = Archive::Zip->new; $z->read("file.zip"); $m = $z->memberNamed("file.txt"); $m->password("secret"); say $m->contents;'
hi there
0

$ perl -MArchive::Zip -E 'say $Archive::Zip::VERSION'
1.65
а запаковывать умеет?
источник

О

Оскар in Modern::Perl
должен
источник

AP

Anton Petrusevich in Modern::Perl
вот если что мои изыскания три года назад в этом же чатике. https://t.me/modernperl/66929
Telegram
Anton Petrusevich in Modern::Perl
#expect
Проблема: надо в постороннюю программу, которая интерактивно спрашивает пароль и требует для этого настоящий терминал, ввести этот пароль. Для подобных взаимодействий по сценарию, в перле есть модуль Expect. Всё бы хорошо, но есть одна закавыка, не отражённая ни в какой документации. Если программа, которая спрашивает пароль, сама манипулирует терминалом, то нет никакого способа синхронизироваться с этими манипуляциями, кроме как просто добавить задержку на их выполнение. То есть, программа zip включает эхо, выводит "password:", выключает эхо, получает пароль с терминала, включает снова эхо. zip спрашивает пароль два раза. Из-за рассинхронизации мастера с терминалом zip, иногда вторая посылка пароля в zip происходит до того, как он выключить эхо, в итоге мастер сам получает то, что послал, а zip не получает ничего и висит в ожидании
источник

О

Оскар in Modern::Perl
если архивы чужие, рекомендую помнить про файлбомбы
источник

AP

Anton Petrusevich in Modern::Perl
мне надо было наоборот запаковывать
источник

AP

Anton Petrusevich in Modern::Perl
и чувак до меня тоже иного способа не нашёл, кроме как зип запускать через экспект. только у него код работал редко и потому не сразу были заметны проблемы, что архивы создаются не всегда.
источник