名前

Mojo::ByteStream - バイトストリーム

使い方

use Mojo::ByteStream;

# バイトストリームの操作
my $stream = Mojo::ByteStream->new('foo_bar_baz');
say $stream->camelize;

# チェーンメソッド
my $stream = Mojo::ByteStream->new('foo bar baz')->quote;
$stream = $stream->unquote->encode('UTF-8')->b64_encode('');
say "$stream";

# もうひとつのコンストラクタを使用
use Mojo::ByteStream 'b';
my $stream = b('foobarbaz')->b64_encode('')->say;

説明

Mojo::ByteStreamは、Mojo::Utilの多くの関数に対してより便利なAPIを提供するための、バイトストリームのためのスカラのコンテナです。

# Access scalar directly to manipulate bytestream
my $stream = Mojo::ByteStream->new('foo');
$$stream .= 'bar';

関数

Mojo::ByteStreamは次の関数を実装しています。個々にインポートすることも可能です。

b

my $stream = b('test123');

新しいMojo::ByteStreamオブジェクトを生成します。

メソッド

Mojo::ByteStreamは次のメソッドを実装しています。

b64_decode

$stream = $stream->b64_decode;

Mojo::Utilb64_decodeを使って、バイトストリームをBase64デコードします。

b64_encode

$stream = $stream->b64_encode;
$stream = $stream->b64_encode('');

Mojo::Utilb64_encodeを使って、バイトストリームをBase64エンコードします。

b('foo bar baz')->b64_encode('');

camelize

$stream = $stream->camelize;

Mojo::Utilcamelizeを使って、バイトストリームをキャメライズします。

clone

my $stream2 = $stream->clone;

バイトストリームを複製します。

decamelize

$stream = $stream->decamelize;

Mojo::Utildecamelizeを使って、バイトストリームをデキャメライズします。

decode

$stream = $stream->decode;
$stream = $stream->decode('iso-8859-1');

Mojo::Utildecodeを使ってバイトストリームをデコードします。 デフォルトはUTF-8です。

# "♥"
b('%E2%99%A5')->url_unescape->decode;

encode

$stream = $stream->encode;
$stream = $stream->encode('iso-8859-1');

Mojo::Utilencodeを使って、バイトストリームをエンコードします。 デフォルトはUTF-8です。

# "%E2%99%A5"
b('♥')->encode->url_escape;

gunzip

$stream = $stream->gunzip;

 Mojo::Utilの「gunzip」を使って、バイトストリームを展開します。

gzip

stream = $stream->gzip;

Mojo::Utilの「gzip」を使って、バイトストリームを圧縮します。

hmac_sha1_sum

$stream = $stream->hmac_sha1_sum($secret);

Mojo::Utilhmac_sha1_sumを使って、 バイトストリームのためにHMAC-SHA1チェックサムを生成します。

# "7fbdc89263974a89210ea71f171c77d3f8c21471"
b('foo bar baz')->hmac_sha1_sum('secr3t');

html_unescape

$stream = $stream->html_unescape;

Mojo::Utilhtml_unescapeを使って、 すべてのHTMLエンティティをアンエスケープします。

# "%3Chtml%3E"
b('<html>')->html_unescape->url_escape;

md5_bytes

$stream = $stream->md5_bytes;

Mojo::Utilmd5_bytesを使って、 バイトストリームのためにバイナリのMD5を生成します。

md5_sum

$stream = $stream->md5_sum;

Mojo::Utilmd5_sumを使って、 バイトストリームのためにMD5を生成します。

new

my $stream = Mojo::ByteStream->new('test123');

新しいMojo::ByteStreamオブジェクトを生成します。

punycode_decode

$stream = $stream->punycode_decode;

Mojo::Utilpunycode_decodeを使って、 バイトストリームをPunycodeデコードします。

punycode_encode

$stream = $stream->punycode_encode;

Mojo::Utilpunycode_encodeを使って、 バイトストリームをPunycodeエンコードします。

quote

$stream = $stream->quote;

Mojo::Utilquoteを使って、 バイトストリームをクォートします。

say

$stream = $stream->say;
$stream = $stream->say(*STDERR);

バイトストリームをハンドルかSTDOUTに出力し、新しい改行を追加します。

secure_compare

my $bool = $stream->secure_compare($str);

Mojo::Utilsecure_compareを使って、 バイトストリームを比較します。

sha1_bytes

$stream = $stream->sha1_bytes;

Mojo::Utilsha1_bytesを使って、バイトストリームのためにバイナリのSHA1チェックサム を生成します。

sha1_sum

$stream = $stream->sha1_sum;

Mojo::Utilsha1_sumを使って、バイトストリームのためにSHA1チェックサム を生成します。

size

my $size = $stream->size;

バイトストリームのサイズです。

slugify

$stream = $stream->slugify;
$stream = $stream->slugify($bool);

Mojo::Utilの「slugify」を使って、バイトストリームのためのURLのスラグを生成します。

split

my $collection = $stream->split(',');
my $collection = $stream->split(',', -1);

バイトストリームを、複数のMojo::ByteStreamオブジェクトを含むMojo::Collectionオブジェクトに変換します。

# "One,Two,Three"
b("one,two,three")->split(',')->map('camelize')->join(',');

# "One,Two,Three,,,"
b("one,two,three,,,")->split(',', -1)->map('camelize')->join(',');

split

my $collection = $stream->split(',');
my $collection = $stream->split(',', -1);

バイトストリームをMojo::ByteStreamオブジェクトを含んだMojo::Collectionオブジェクトに変換します。

# "One,Two,Three"
b("one,two,three")->split(',')->map('camelize')->join(',');

# "One,Two,Three,,,"
b("one,two,three,,,")->split(',', -1)->map('camelize')->join(',');

tap

$stream = $stream->tap(sub {...});

Mojo::Basetapの別名。

term_escape

$stream = $stream->term_escape;

Mojo::Utilterm_escapeを使って、 バイトストリームの中のPOSIXのコントロール文字をエスケープ

# バイナリチェックサムをターミナルに出力
b('foo')->sha1_bytes->term_escape->say;

to_string

# "%E2%98%83"
b('☃')->encode->url_escape;

バイトストリームを文字列化します。

trim

$stream = $stream->trim;

Mojo::Utiltrimを使って、 バイトストリームの両端から空白を取り除きます。

unindent

$stream = $stream->unindent;

[Mojo::Util]]のunindentを使って、バイトストリームをアンインデントします。

unquote

$stream = $stream->unquote;

Mojo::Utilunquoteを使って、バイトストリームを アンクォートします。

url_escape

$stream = $stream->url_escape;
$stream = $stream->url_escape('^A-Za-z0-9\-._~');

Mojo::Utilurl_escapeを使って、 バイトストリームの中のすべての安全でない 文字をパーセントエンコードします。

b('foo bar baz')->url_escape->say;

url_unescape

$stream = $stream->url_unescape;

Mojo::Utilurl_unescapeを使って、 パーセントエンコードされた文字をデコードします。

# "<html>"
b('%3Chtml%3E')->url_unescape->xml_escape;

with_roles

my $new_class = Mojo::ByteStream->with_roles('Mojo::ByteStream::Role::One');
my $new_class = Mojo::ByteStream->with_roles('+One', '+Two');
$stream       = $stream->with_roles('+One', '+Two');

Mojo::Baseの「with_roles」のエイリアス。

xml_escape

$stream = $stream->xml_escape;

Mojo::Utilxml_escapeを使って、 バイトストリームの中の &, <, >, ' という文字だけをエスケープします。

xor_encode

$stream = $stream->xor_encode($key);

Mojo::Utilxor_encodeを使って、バイトストリームをXORエンコードします。

# "%04%0E%15B%03%1B%10"
b('foo bar')->xor_encode('baz')->url_escape;

演算子

Mojo::ByteStreamは次の演算子をオーバーロードしています。

bool

my $bool = !!$bytestream;

いつでも真です。

stringify

my $str = "$bytestream";

to_stringの別名。

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映)

関連情報