Util-便携式实用程序函数
使用Mojo::Util qw(b64_encode url_escape url_unescape);my$str='测试=23';my$escape=url_escape$str;说urlunescape$逃逸了;说b64_encode$已转义,“”;
Mojo::实用程序为提供便携式实用程序功能莫霍.
Mojo::实用程序实现以下功能,这些功能可以单独导入。
我的$字节=b64_decode$b64;
使用Base64解码字节MIME::Base64.
我的$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.
my$compressed=gzip$uncompressed;
压缩字节IO::压缩::Gzip.
my($params,$remainment)=header_params'one=foo;2=“bar”,3=baz';
根据副本请求5987。请注意,此函数是实验而且可能会毫无预警地发生变化!
my$checksum=hmac_sha1_sum$字节,“passw0rd”;
为具有的字节生成HMAC-SHA1校验和摘要::SHA.
#“11cedf5ec11adc0ec234466d8a0f2a83736aa68”hmac_sha1_sum“foo”,“passw0rd”;
我的$str=html_attr_unescape$逃逸了;
等同于“html_unescape”,但处理来自HTML生活标准用于HTML属性。
#“foo=bar<est=baz”html_attr_unescape'foo=bar<est=baz';#“foo=bar<est=baz”html_attr_unescape'foo=bar<;est=baz';
my$str=html_unescape$转义;
取消显示字符串中的所有HTML实体。
#“<div>”html_unescape'<;div>;';
my$str=人性化字节1234;
将字节数转换为简化的人类可读格式。
#“1B”人性化字节1;#“7.5 GiB”人性化字节8007188480;#“13 GiB”人性化字节13443399680;#“-685MiB”人性化字节-717946880;
我的$checksum=md5_bytes$字节;
使用为字节生成二进制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=>子{说‘三!’};
我的$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=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;
恒定时间比较算法,防止定时攻击。机密字符串应该是第二个参数,以避免泄漏有关字符串长度的信息。
我的$checksum=sha1_bytes$bytes;
使用为字节生成二进制SHA1校验和摘要::SHA.
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.
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;
取消字符串引号。
my$escape=url_escape$str;my$escape=url_escape$str,'^A-Za-z0-9\-._~';
字符串中不安全字符的编码百分比,如中所述射频3986,使用的模式默认为^A-Za-z0-9 \-_~
.
#“foo%3Bar”url_escape’foo;巴';
my$str=url_unescape$转义;
解码字符串中编码字符的百分比,如中所述射频3986.
#“foo;bar”url_unescape“foo%3Bar”;
my$escaped=xml_escape$str;
转义不安全字符&
,<
,>
,"
和'
在字符串中,但不要转义Mojo::字节流物体。
#“<;div>;”xml_escape“<div>”;#“<div>”使用Mojo::ByteStream qw(b);xml_escape b('<div>');
my$encoded=xor_code$str,$key;
用可变长度键对字符串进行异或编码。
莫乔利奇,Mojolicious::指南,https://mojolicious.org.