格式字符 描述a用空字符(null)补足的字符串A用空格补足的字符串b位串,低位在前B位串,高位在前c带符号字符(通常-128~127)C无符号字符(通常8位)d双精度浮点数f单精度浮点数h十六进制数串,低位在前H十六进制数串,高位在前i带符号整数I无符号整数l带符号长整数L无符号长整数n网络序短整数N网络序长整数p字符串指针s带符号短整数S无符号短整数u转化成uuencode格式vVAX序短整数VVAX序长整数x一个空字节X回退一个字节@以空字节(null)填充 函数名unpack调用语法@list = unpack (packformat, formatstr);解说unpack 与pack功能相反,将以机器格式存贮的值转化成Perl中值的列表。其格式字符与pack基本相同(即上表),不同的有:A格式将机器格式字符串转化为 Perl字符串并去掉尾部所有空格或空字符;x为跳过一个字节;@为跳过一些字节到指定的位置,如@4为跳过4个字节。下面看一个@和X合同的例子: $longrightint = unpack ("@* X4 L", $packstring); 此语句将最后四个字节看作无符号长整数进行转化。下面看一个对uuencode文件解码的例子: 1 : #!/usr/local/bin/perl 2 : 3 : open (CODEDFILE, "/u/janedoe/codefile") || 4 : die ("Can't open input file"); 5 : open (OUTFILE, ">outfile") || 6 : die ("Can't open output file"); 7 : while ($line = <CODEDFILE>) { 8 : $decoded = unpack("u", $line); 9 : print OUTFILE ($decoded); 10: } 11: close (OUTFILE); 12: close (CODEDFILE); 当将pack和unpack用于uuencode时,要记住,虽然它们与UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和 末行,如果想用uudecode对由pack的输出创建的文件进行解码,必须也把首行和末行输出(详见UNIX中uuencode帮助)。