名前

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::Liteanyを使ってルートを生成し、 現在の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::UserAgentdeleteを使って、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::UserAgentgetを使って、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::UserAgentheadを使って、HEAD 要求を実行し、結果として Mojo::Message::Responseを返却します。

j

my $bytes = j([1, 2, 3]);
my $bytes = j({foo => 'bar'});
my $value = j($bytes);

Perlデータ構造をMojo::JSONjを使って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::UserAgentoptionsを使って、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::UserAgentpostを使って、POST 要求を実行し、結果として Mojo::Message::Responseを返却します。

r

my $perl = r({data => 'structure'});

Perlのデータ構造をMojo::Utildumperを使ってダンプします。

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::UserAgentpatchを使って、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::UserAgentputを使って、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日更新)

関連情報