相关疑难解决方法(0)

我可以使用unpack将字符串拆分为Perl中的字符吗?

一个常见的'Perlism'生成一个列表,作为以这种形式循环的东西:

for($str=~/./g) { print "the next character from \"$str\"=$_\n"; }

在这种情况下,全局匹配正则表达式从字符串返回一个依次为一个字符的列表,$str并将该值赋给$_

取而代之的是正则表达式,split可以以同样的方式或使用'a'..'z',map等等.

我正在调查unpack通过字符串的字段解释生成字段.我总是发现unpack我的大脑工作方式不太直白,我从来没有真正深入挖掘它.

作为一个简单的例子,我要生成一个列表,是从一个字符串中使用解包中的每个元素的一个字符(是的-我知道我能做到这一点split(//,$str)/./g,但我真的想看看解包可以采用这种方式.. .)

显然,我可以使用字段列表进行解包,unpack("A1" x length($str), $str)但是有没有其他方式看起来像通配?即,我unpack(some_format,$str)可以在列表上下文或循环中调用,以便解压缩将返回格式组中的下一组字符,直到$ str被排除?

我已经阅读了Perl 5.12 Pack podPerl 5.12 pack教程以及Perkmonks教程

以下是示例代码:

#!/usr/bin/perl
use warnings;
use strict;

my $str=join('',('a'..'z', 'A'..'Z')); #the alphabet...  

$str=~s/(.{1,3})/$1 /g;                #...in groups of three
print "str=$str\n\n";

for ($str=~/./g) { 
 print "regex: = $_\n";
}

for(split(//,$str)) …
Run Code Online (Sandbox Code Playgroud)

perl unpack

6
推荐指数
1
解决办法
2844
查看次数

标签 统计

perl ×1

unpack ×1