Чтоб не вспоминать кажыдй раз команды перлового отладчика, сделал шпаргалку — скопировал на лист размера A4 текст, выводимый отладчиком по команде h, и добавил верблюда:
Архив метки: perl
Без лишних движений мышью
Отлаживаю скрипт, получаю развесистую структуру данных, чей дамп, сделанный модулем Data::Dumper, занимает почти 9000 строк. Вывел дамп на экран, потянулся к мышке, чтоб скопировать и засунуть в файл, да вовремя остановился — есть же простой метод: достаточно написать в отладчике всего пару строк:
use File::Slurp
write_file 'big-structure.pl', Dumper $structure
P. S. А если вместо Data::Dumper использовать Data::Dumper::Perltidy, результат получается более симпатичным.
Не zip
На сайте prostopleer.com есть, вроде бы, возможность скачать целиком музыкальный альбом. Но потом — сюрприз! — скачавшийся zip-файл вовсе не является ZIP-архивом: ни unzip, ни 7z не желают его открывать. Лишь всемогущий mplayer спокойно играет одну пьесу за другой.
Анализ содержимого показал: в начале архива идёт стандартная сигнатура PK♥♦ (50 4B 03 04), но за ней — имена файлов вместе с мусором и сами файлы, без какого-либо сжатия. Достать музыку из такого файла при наличии перла — легко!
#!/usr/bin/perl -0777 -n
=head1 DESCRIPTION
Split big pseudo zip-archive from prostopleer.com into small mp3 files.
=head1 USAGE
./split.pl big-pseudo.zip
=head1 SEE ALSO
L<< https://gist.github.com/shoorick/7785185 >>
=head1 AUTHOR
Alexander Sapozhnikov
L<< http://shoorick.ru/ >>
L<lt>shoorick@cpan.orgE<gt>
=cut
binmode(STDIN);
my $divisor = "ID3\x04\x00";
my @chunks = split $divisor;
shift @chunks;
my $i = 1;
foreach my $chunk ( @chunks ) {
open(my $fh, '<', sprintf('%02d.mp3', $i++))
or die "cannot open for writing: $!";
print $fh $divisor, $chunk;
close $fh;
}
Оно же — на гитхабе: https://gist.github.com/shoorick/7785185
Без звёздочек
У Subversion (во всяком случае, у линуксовой версии 1.7) есть странная на первый взгяд особенность: свежедобавленные PHP-файлы при первом же коммите получают свойство svn:executable и становятся исполняемыми, что вовсе не требуется. Предполагая, что это не баг, а фича, заглянул в конфигурационный файл ~/.subversion/config — так и есть. Subversion может выставлять некоторые свойства свежедобавленным файлам. Такое поведение можно настроить. Во-первых, глобально включить — нужный параметр находится в секции [miscellany]:
### Set enable-auto-props to 'yes' to enable automatic properties ### for 'svn add' and 'svn import', it defaults to 'no'. ### Automatic properties are defined in the section 'auto-props'. enable-auto-props = yes
Во-вторых, настроить, какие именно свойства надо установить:
### Section for configuring automatic properties. [auto-props] ### The format of the entries is: ### file-name-pattern = propname[=value][;propname[=value]...] ### The file-name-pattern can contain wildcards (such as '*' and ### '?'). All entries which match will be applied to the file. ### Note that auto-props functionality must be enabled, which ### is typically done by setting the 'enable-auto-props' option. # *.c = svn:eol-style=native # *.cpp = svn:eol-style=native # *.h = svn:eol-style=native # *.dsp = svn:eol-style=CRLF # *.dsw = svn:eol-style=CRLF *.pl = svn:eol-style=native;svn:executable *.pm = svn:eol-style=native *.php = svn:eol-style=native
В моём случае и для перловых модулей, и для PHP-файлов среди свойств значилось svn:executable — убрал.