模块:莫霍::Util公司

名称

Util-便携式实用程序函数

简介

使用Mojo::Util qw(b64_encode url_escape url_unescape);my$str='测试=23';my$escape=url_escape$str;说urlunescape$逃逸了;说b64_encode$已转义,“”;

说明

Mojo::实用程序为提供便携式实用程序功能莫霍.

功能

Mojo::实用程序实现以下功能,这些功能可以单独导入。

b64代码

我的$字节=b64_decode$b64;

使用Base64解码字节MIME::Base64.

b64_编码

我的$b64=b64编码$字节;my$b64=b64_encode$字节,“\n”;

使用Base64编码字节MIME::Base64,行尾默认为换行。

使成为骆驼

my$camelcase=骆驼化$snakecase;

转换蛇形(_C)字符串到驼峰命名法并更换-具有::.

#“FooBar”camelize“foo_bar”;#“FooBar::Baz”camelize“foo_bar-baz”;#“FooBar::Baz”camelize“FooBar::Baz”;

类_文件

my$file=class_to_file'Foo::Bar';

将类名转换为文件。

#“foo_bar”class_to_file“Foo::Bar”;#“foobar”class_to_file“FOO::Bar”;#“foo_bar”class_to_file“FooBar”;#“foobar”类_to_file“FOOBar”;

类_路径

my$path=class_to_path'Foo::Bar';

将类名转换为使用的路径%INC公司.

#“Foo/Bar.pm”class_to_path“Foo::Bar”;#“FooBar.pm”class_to_path“FooBar”;

使脱羧

我的$snakecase=脱壳$camelcase;

转换驼峰命名法字符串到蛇形(_C)并更换::具有-.

#“foo_bar”去糖化“FooBar”;#“foo_bar-baz”decamelize“FooBar::Baz”;#“foo_bar-baz”去除“foo_bar-baz”;

解码

my$chars=解码'UTF-8',$bytes;

使用将字节解码为字符编码,或返回未定义如果解码失败。

已弃用

已弃用“foo已弃用,取而代之的是bar”;

从调用方的角度警告不推荐使用的功能。您还可以设置MOJO_fata_depreventions(MOJO_fata_depreventions)环境变量,使其死亡挑剔.

自卸车

my$perl=dumper{some=>“数据”};

使用转储Perl数据结构数据::自卸车.

编码

my$bytes=编码“UTF-8”,$chars;

使用将字符编码为字节编码.

提取_使用

我的$usage=extract_usage;my$usage=extract_usage'/home/sri/foo.pod';

从包含POD文档的文件的SYNOPSIS部分提取用法消息,默认使用调用此函数的文件。

#“用法:应用程序测试[选项]\n”提取使用;=标题1概要用法:应用测试[选项]=切割

获得选择权

获得选择权'H|headers=s'=>\my@headers,'t|timeout=i'=>\my$timeout,'v|verbose'=>\my$verbose;getopt$数组,'H|headers=s'=>\my@headers,'t|timeout=i'=>\my$timeout,'v|verbose'=>\my$verbose;getopt$数组,['pass_through'],'H|headers=s'=>\my@headers,'t|timeout=i'=>\my$timeout,'v|verbose'=>\my$verbose;

使用从数组引用中提取选项Getopt::长,但不更改其全局配置,默认为使用@ARGV公司.配置选项无自动制动无忽略案例默认情况下启用。

#提取“字符集”选项getopt['--charset','UTF-8'],'charset=s'=>\my$charset;说$charset;

解压缩

my$uncompressed=gunzip$compressed;

使用解压缩字节IO::压缩::Gunzip.

gzip程序

my$compressed=gzip$uncompressed;

压缩字节IO::压缩::Gzip.

标头参数

my($params,$remainment)=header_params'one=foo;2=“bar”,3=baz';

根据副本请求5987。请注意,此函数是实验而且可能会毫无预警地发生变化!

hmac_sha1_sum

my$checksum=hmac_sha1_sum$字节,“passw0rd”;

为具有的字节生成HMAC-SHA1校验和摘要::SHA.

#“11cedf5ec11adc0ec234466d8a0f2a83736aa68”hmac_sha1_sum“foo”,“passw0rd”;

html_attr_unescape

我的$str=html_attr_unescape$逃逸了;

等同于“html_unescape”,但处理来自HTML生活标准用于HTML属性。

#“foo=bar&ltest=baz”html_attr_unescape'foo=bar&ltest=baz';#“foo=bar<est=baz”html_attr_unescape'foo=bar&lt;est=baz';

html_unescape

my$str=html_unescape$转义;

取消显示字符串中的所有HTML实体。

#“<div>”html_unescape'&lt;div&gt;';

人性化字节

my$str=人性化字节1234;

将字节数转换为简化的人类可读格式。

#“1B”人性化字节1;#“7.5 GiB”人性化字节8007188480;#“13 GiB”人性化字节13443399680;#“-685MiB”人性化字节-717946880;

md5_字节

我的$checksum=md5_bytes$字节;

使用为字节生成二进制MD5校验和摘要::MD5.

md5_总数

my$checksum=md5_sum$字节;

使用生成字节的MD5校验和摘要::MD5.

#“acbd18db4cc2f85cedef654fccc4a4d8”md5_sum“foo”;

猴子补丁

monkey_patch$包,foo=>sub{…};monkey_patch$package,foo=>sub{…},bar=>sub{…{;

Monkey将函数补丁到包中。

monkey_patch“我的应用程序”,one=>子{说“一!”},two=>子{说“two!”},three=>子{说‘三!’};

puny代码_代码

我的$str=punycode_decode$punyccode;

Punycode解码字符串,如中所述副本请求3492.

#“比彻”punycode_decode“bcher-kva”;

网络容器

my$bool=network_contains$network,$address;

检查给定地址是否以CIDR形式包含在网络中。如果网络是单个地址,则地址必须等效。

#真的network_contains(“0.0.0.0/8”,“10.10.10.10”);网络容器('10.10.10.10','10.10.10.0');网络容器('fc00::/7','fc::c0:ff:ee');#错误网络容器('10.0.0.0/29','10.10.10.10');网络容器('10.10.10.12','10.10.10.10');网络容器('fc00::/7','::1');

punycode_encode码

我的$punycode=punycode_encode$str;

Punycode编码字符串,如中所述副本请求3492.

#“bcher-kva”punycode_encode‘bücher’;

引用

my$quoted=报价$str;

引号字符串。

范围_保护

my$guard=scope_guard子{…};

创建匿名范围保护对象,当对象被销毁时,该对象将执行传递的回调。

#在范围结束时执行关闭{my$guard=scope_guard子{说“Mojo!”};说“你好”;}

安全比较

my$bool=安全比较$str1,$str2;

恒定时间比较算法,防止定时攻击。机密字符串应该是第二个参数,以避免泄漏有关字符串长度的信息。

sha1_字节

我的$checksum=sha1_bytes$bytes;

使用为字节生成二进制SHA1校验和摘要::SHA.

sha1 _总和

my$checksum=sha1_sum$字节;

使用生成字节的SHA1校验和摘要::SHA.

#“0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33”sha1_sum“foo”;

使迟缓

my$slug=slugify$string;我的$slug=slugify$string,$bool;

返回从输入字符串生成的URL slug。删除非字字符,对字符串进行裁剪和小写,空白字符替换为破折号。默认情况下,非ASCII字符被规范化为ASCII单词字符或被删除,但如果传递一个真值作为第二个参数,则根据unicode语义,结果中将允许所有单词字符。

#“托梁-is-slug”slugify“乔尔是个懒虫”;#“这是我的救命稻草”slifify'这是:我的简历!☃ ';#“this-is-my-résumé”slifify'这是:我的简历!☃ ', 1;
我的$tree=split_cookie_header'a=b;expires=2008年8月7日星期四07:07:59 GMT';

等同于“split_header”,但句柄到期值来自副本请求6265.

split_header(拆分页眉)

my$tree=split_header'foo=“bar-baz”;测试=123,yada';

将HTTP标头值拆分为键/值对,每个以逗号分隔的部分获取自己的数组引用,而不带值的键获取未定义分配。

#“一个”split_header('one;two=“三四”,five=six')->[0][0];#“两个”split_header('one;two=“三四”,five=six')->[0][2];#“三四”split_header('one;two=“三四”,five=six')->[0][3];#“五”split_header('one;two=“三四”,five=six')->[1][0];#“六”split_header('one;two=“三四”,five=six')->[1];

稳定时间

my$time=steadytime;

过去从任意固定点经过的高分辨率时间,如果单调时钟可用,则对时间跳跃具有弹性时间::HiRes.

将…制成表格

my$table=tablify[['foo','bar'],['baz','yada']];

文本表的面向行的生成器。

#“foo bar\nyada yada\nbaz yada\n”tablify[['foo','bar'],['yada','yada'],[baz','ayda']];

术语_景观

my$escaped=term_escape$str;

转义除\n个.

#“foo\\x09bar\\x0d\n”term_escape“foo\tbar\r\n”;

修剪

my$trimmed=修剪$str;

修剪字符串两端的空白字符。

#“foo栏”修剪“foo bar”;

未受影响的

my$unindented=未登录$str;

取消缩进多行字符串。

#“foo\nbar\nbaz\n”unindent“foo\n bar\n baz\n”;

无报价

my$str=unquote$quoted;

取消字符串引号。

url_escape

my$escape=url_escape$str;my$escape=url_escape$str,'^A-Za-z0-9\-._~';

字符串中不安全字符的编码百分比,如中所述射频3986,使用的模式默认为^A-Za-z0-9 \-_~.

#“foo%3Bar”url_escape’foo;巴';

url_unescape

my$str=url_unescape$转义;

解码字符串中编码字符的百分比,如中所述射频3986.

#“foo;bar”url_unescape“foo%3Bar”;

xml_escape

my$escaped=xml_escape$str;

转义不安全字符&,<,>,"'在字符串中,但不要转义Mojo::字节流物体。

#“&lt;div&gt;”xml_escape“<div>”;#“<div>”使用Mojo::ByteStream qw(b);xml_escape b('<div>');

异或编码

my$encoded=xor_code$str,$key;

用可变长度键对字符串进行异或编码。

另请参阅

莫乔利奇,Mojolicious::指南,https://mojolicious.org.