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::Utilのb64_decodeを使って、バイトストリームをBase64デコードします。
b64_encode
$stream = $stream->b64_encode;
$stream = $stream->b64_encode('');
Mojo::Utilのb64_encodeを使って、バイトストリームをBase64エンコードします。
b('foo bar baz')->b64_encode('');
camelize
$stream = $stream->camelize;
Mojo::Utilのcamelizeを使って、バイトストリームをキャメライズします。
clone
my $stream2 = $stream->clone;
バイトストリームを複製します。
decamelize
$stream = $stream->decamelize;
Mojo::Utilのdecamelizeを使って、バイトストリームをデキャメライズします。
decode
$stream = $stream->decode;
$stream = $stream->decode('iso-8859-1');
Mojo::Utilのdecodeを使ってバイトストリームをデコードします。 デフォルトはUTF-8です。
# "♥"
b('%E2%99%A5')->url_unescape->decode;
encode
$stream = $stream->encode;
$stream = $stream->encode('iso-8859-1');
Mojo::Utilのencodeを使って、バイトストリームをエンコードします。 デフォルトは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::Utilのhmac_sha1_sumを使って、 バイトストリームのためにHMAC-SHA1チェックサムを生成します。
# "7fbdc89263974a89210ea71f171c77d3f8c21471"
b('foo bar baz')->hmac_sha1_sum('secr3t');
html_unescape
$stream = $stream->html_unescape;
Mojo::Utilのhtml_unescapeを使って、 すべてのHTMLエンティティをアンエスケープします。
# "%3Chtml%3E"
b('<html>')->html_unescape->url_escape;
md5_bytes
$stream = $stream->md5_bytes;
Mojo::Utilのmd5_bytesを使って、 バイトストリームのためにバイナリのMD5を生成します。
md5_sum
$stream = $stream->md5_sum;
Mojo::Utilのmd5_sumを使って、 バイトストリームのためにMD5を生成します。
new
my $stream = Mojo::ByteStream->new('test123');
新しいMojo::ByteStreamオブジェクトを生成します。
punycode_decode
$stream = $stream->punycode_decode;
Mojo::Utilのpunycode_decodeを使って、 バイトストリームをPunycodeデコードします。
punycode_encode
$stream = $stream->punycode_encode;
Mojo::Utilのpunycode_encodeを使って、 バイトストリームをPunycodeエンコードします。
quote
$stream = $stream->quote;
Mojo::Utilのquoteを使って、 バイトストリームをクォートします。
say
$stream = $stream->say; $stream = $stream->say(*STDERR);
バイトストリームをハンドルかSTDOUTに出力し、新しい改行を追加します。
secure_compare
my $bool = $stream->secure_compare($str);
Mojo::Utilのsecure_compareを使って、 バイトストリームを比較します。
sha1_bytes
$stream = $stream->sha1_bytes;
Mojo::Utilのsha1_bytesを使って、バイトストリームのためにバイナリのSHA1チェックサム を生成します。
sha1_sum
$stream = $stream->sha1_sum;
Mojo::Utilのsha1_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::Baseのtapの別名。
term_escape
$stream = $stream->term_escape;
Mojo::Utilのterm_escapeを使って、 バイトストリームの中のPOSIXのコントロール文字をエスケープ
# バイナリチェックサムをターミナルに出力
b('foo')->sha1_bytes->term_escape->say;
to_string
# "%E2%98%83"
b('☃')->encode->url_escape;
バイトストリームを文字列化します。
trim
$stream = $stream->trim;
Mojo::Utilのtrimを使って、 バイトストリームの両端から空白を取り除きます。
unindent
$stream = $stream->unindent;
[Mojo::Util]]のunindentを使って、バイトストリームをアンインデントします。
unquote
$stream = $stream->unquote;
Mojo::Utilのunquoteを使って、バイトストリームを アンクォートします。
url_escape
$stream = $stream->url_escape;
$stream = $stream->url_escape('^A-Za-z0-9\-._~');
Mojo::Utilのurl_escapeを使って、 バイトストリームの中のすべての安全でない 文字をパーセントエンコードします。
b('foo bar baz')->url_escape->say;
url_unescape
$stream = $stream->url_unescape;
Mojo::Utilのurl_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::Utilのxml_escapeを使って、 バイトストリームの中の &, <, >, ' という文字だけをエスケープします。
xor_encode
$stream = $stream->xor_encode($key);
Mojo::Utilのxor_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を反映)
Mojoliciousドキュメント日本語訳