在 Perl 中读取固定长度记录的最佳方法是什么。我知道要读取如下文件:
ABCDE 302
DEFGC 876
我可以
while (<FILE>) {
$key = substr($_, 0, 5);
$value = substr($_, 7, 3);
}
但是没有办法通过读取/解包来做到这一点吗?
最佳答案
my($key, $value) = unpack "A5 A3"; # Original, but slightly dubious
我们都需要查看 unpack 上的选项。手册页(尤其是 pack 手册页)。
由于 A pack 运算符删除了尾随空格,因此您的示例可以编码为:
my($key, $value) = unpack "A6A3";
或者(这是 Perl,所以是 TMTOWTDI):
my($key, $blank, $value) = unpack "A5A1A3";
1 是可选的,但系统性和对称性。这样做的一个优点是您可以验证
$blank eq " "
.
关于perl - 如何在 Perl 中读取固定长度的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407407/