ojo - Mojo と共にワンライナーをお楽しみ下さい!
使い方
$ perl -Mojo -E 'say g("mojolicio.us")->dom->at("title")->text'
説明
Perl ワンライナーを楽しむために自動的にエクスポートしている関数のコレクション。
10リダイレクトがデフォルトです。 この動きは、MOJO_MAX_REDIRECTS
環境変数で変更することができます。
$ MOJO_MAX_REDIRECTS=0 perl -Mojo -E 'say g("mojolicio.us")->code'
プロキシの検知はデフォルトで有効になっていますが、 MOJO_PROXY
環境変数で無効にすることもできます。
$ MOJO_PROXY=0 perl -Mojo -E 'say g("mojolicio.us")->body'
すべてのojoワンライナーはMojolicious::Liteアプリケーションです。
$ perl -Mojo -E 'get "/" => {inline => "%= time"}; app->start' get /
Perl 5.20+であればsubroutine signaturesが自動的に有効になります。
$ perl -Mojo -E 'a(sub ($c) { $c->render(text => 'Hello!') })->start' get /
まだ定義されていなければ、MOJO_LOG_LEVEL
環境変数はfatal
に設定されます。
関数
ojo は以下の機能を実装します。これらは自動的にエクスポートされます。
a
my $app = a('/hello' => sub { $_->render(json => {hello => 'world'}) });
Mojolicious::Liteのany
を使ってルートを生成し、 現在のMojolicious::Liteオブジェクトを返します。 現在のコントローラーオブジェクトは$_として利用可能です。 引数のバリエーションについてはMojolicious::Liteの チュートリアルを見てください。
$ perl -Mojo -E 'a("/" => {text => "Hello Mojo!"})->start' daemon
b
my $stream = b('lalala');
入力を Mojo::ByteStream オブジェクトに変換します。
$ $ perl -Mojo -E 'say g("mojolicio.us")->dom("h1, h2, h3")->text'
c
my $collection = c(1, 2, 3);
リストをMojo::Collectionオブジェクトに変換します。
d
my $res = d('mojolicio.us'); my $res = d('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = d('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = d('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのdelete
を使って、DELETE
要求を実行し、結果として Mojo::Message::Responseを返却します。
f
my $path = f('/home/sri/foo.txt');
文字列をMojo::Fileオブジェクトに変換します。
$ perl -Mojo -E 'say r j f("hello.json")->slurp'
g
my $res = g('mojolicio.us'); my $res = g('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = g('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = g('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのget
を使って、GET
要求を実行し、結果として Mojo::Message::Responseを返却します。
$ perl -Mojo -E 'say g("mojolicio.us")->dom("h1")->map("text")->join("\n")'
h
my $res = h('mojolicio.us'); my $res = h('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = h('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = h('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのhead
を使って、HEAD
要求を実行し、結果として Mojo::Message::Responseを返却します。
j
my $bytes = j([1, 2, 3]); my $bytes = j({foo => 'bar'}); my $value = j($bytes);
Perlデータ構造をMojo::JSONのj
を使ってJSONにエンコードあるいはデコードします。
$ perl -Mojo -E 'b(j({hello => "world!"}))->spurt("hello.json")'
n
n {...}; n {...} 100;
ブロックをベンチマークし、結果を出力します。 イテレーションのデフォルトの回数は、1
です。
$ perl -Mojo -E 'n { say g("mojolicio.us")->code }'
o
my $res = o('mojolicio.us'); my $res = o('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = o('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = o('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのoptions
を使って、OPTIONS
要求を実行し、結果として Mojo::Message::Responseを返却します。
p
my $res = p('mojolicio.us'); my $res = p('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = p('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = p('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのpost
を使って、POST
要求を実行し、結果として Mojo::Message::Responseを返却します。
r
my $perl = r({data => 'structure'});
Perlのデータ構造をMojo::Utilのdumper
を使ってダンプします。
perl -Mojo -E 'say r(g("example.com")->headers->to_hash)'
t
my $res = t('mojolicio.us'); my $res = t('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = t('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = t('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのpatch
を使って、PATCH
要求を実行し、結果として Mojo::Message::Responseを返却します。
u
my $res = u('http://mojolicio.us'); my $res = u('http://example.com' => {Accept => '*/*'} => 'Hi!'); my $res = u('http://example.com' => {Accept => '*/*'} => form => {a => 'b'}); my $res = u('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
Mojo::UserAgentのput
を使って、PUT
要求を実行し、結果として Mojo::Message::Responseを返却します。
x
my $dom = x('<div>Hello!</div>');
HTML5/XML の入力を Mojo::DOM オブジェクトに変換します。
say x('<div>Hello!</div>')->at('div')->text;
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年6月15日更新)