Upload
anton-ovchinnikov
View
344
Download
3
Embed Size (px)
DESCRIPTION
The presentation from Saint Perl 4 (http://event.yapcrussia.org/saintperl4/) workshop, held on 22 December 2012.
Citation preview
Perl in da shell
by tonyo
Saint Perl 2012
Shell? What's that?
Различаем:
- интерактивные оболочки(irb, python, ghci ...)
- командные оболочки(bash, zsh, tcsh ...)
хотя и не совсем научно :-/
What about Perl?
- интерактивные оболочкиperlconsoleDevel::REPL...
- командные оболочкиZoidbergpsh
Interactive shells
1. Simple one
$ perl -e 'eval while <>'
+ Дешево * нет зависимостей* расширяемая (~ дописываемая)
- Сердито* нет истории* нет автодополнения* нет "многостроковости"* ...
2. Debuggish one
$ perl -de1
+ поддержка Readline+ подгрузка модулей
- не по назначению- сложно настроить под себя
3. perlconsolehttps://metacpan.org/module/SUKRIA/perlconsole-0.4/perlconsole
3. perlconsolehttps://metacpan.org/module/SUKRIA/perlconsole-0.4/perlconsole
+ конфиг-файл (.perlconsolerc)+ возможность выбора output-формата(:set output=scalar / dumper / yaml )
- нельзя писать multi-line код- проект не развивается
4. Devel::REPLhttps://metacpan.org/module/Devel::REPL
4. Devel::REPLhttps://metacpan.org/module/Devel::REPL
+ есть multi-line+ много плагинов
* цветной вывод* история* ...
+ развивается (последний апдейт - 01.11.12)
- много зависимостей
4. Devel::REPLhttps://metacpan.org/module/Devel::REPL
Альпаки одобряют!
Command shells
I. Zoidberghttps://metacpan.org/module/Zoidberg
I. Zoidberghttps://metacpan.org/module/Zoidberg
+ возможности для конфигурации (rc-файлы, плагины)+ обертки для команд из $PATH
zoid$ mv($_ => lc($_)) for grep /[A-Z]/, <*>
- проблемы с поддержкой Unicode- разработка заброшена
II. psh (Perl SHell)https://github.com/gnp/psh
II. psh (Perl SHell)https://github.com/gnp/psh
+ документация+ вспомогательные конструкции (manifest filters)+ реализовано много built-in команд (source, alias, jobs...)
- нельзя смешивать Perl-конструкции и внешние команды- проект не обновляется
II. psh (Perl SHell)https://github.com/gnp/psh
Manifest filters
1. Quick (построковая обработка)$ ls | { print ++$i, ": $_"; }q
2. Grep (фильтр)$ ps -ef | {$_[1] > 20000}g
3. Substitution (замена)$ ls -al | s/tonyo/alpaca/
II. psh (Perl SHell)https://github.com/gnp/psh
Альпаки одобряют!
Outro
- Выбор есть
- Нужно допиливать* конфигурацию* код
Thx!
Альпак опрашивал:
tonyo (aka Антон Овчинников)[email protected]
http://peterpen-ctf.nethttp://vk.com/peterpenctf