perl in da shell

Post on 23-Jun-2015

344 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

The presentation from Saint Perl 4 (http://event.yapcrussia.org/saintperl4/) workshop, held on 22 December 2012.

TRANSCRIPT

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 Антон Овчинников)anton.ovchi2nikov@gmail.com

http://peterpen-ctf.nethttp://vk.com/peterpenctf

top related