関数順 インデックス
目的別 インデックス

構文
 
 pack 変換ルール, 変換対象のリスト

返り値
 
 ・変換対象のリストを変換ルールに従って変換した結果の文字列

説明

  • 変換対象のリストの値を変換ルールに従って文字列に変換します。
  • 変換ルールに指定できる代表的な型指定文字は以下の通りです。
    • a 文字列,不足分はヌル文字で埋める
    • A テキスト文字列,不足分はスペースで埋める
    • Z ヌル終端文字列,不足分はヌル文字で埋める
    • b ビット文字列(下位ビットから上位ビットの順)
    • B ビット文字列(上位ビットから下位ビットの順)
    • h 16進文字列(下位ニブルが先)
    • H 16進文字列(上位ニブルが先)
    • c 符号付きchar値
    • C 符号なしchar値
    • s 符号付きshort値
    • S 符号なしshort値
    • n ネットワークバイト順(ビッグエンディアン)によるshort値
    • N ネットワークバイト順(ビッグエンディアン)によるlong値

 型指定文字の後ろに数字を置くと,型指定文字の繰り返し回数を指定することができます。数字の代わりに*を置くと,残りすべての要素を使うことになります。

使用例

配列@alpha_numの要素の数値を文字の並びに変換する
#!/usr/bin/perl
use strict;
use warnings;

my @alpha_num = (65..90);
my $str = pack "c*", @alpha_num;
my $str2 = pack "c5", @alpha_num;

print $str, "\n";  # ABCDEFGHIJKLMNOPQRSTUVWXYZ
print $str2, "\n"; # ABCDE
配列@dataの要素の文字列を固定長フォーマットの文字列に変換する
#!/usr/bin/perl
use strict;
use warnings;

my @data = qw(
  Alpha
  Bravo
  Charlie
  Delta
);

my $str = pack "A10A10A10A10", @data;
print "[$str]\n"; # [Alpha     Bravo     Charlie   Delta     ]
変数$strの16進数データを文字列に変換する
#!/usr/bin/perl
use strict;
use warnings;

my $str = pack "H*", '48656C6C6F2C20576F726C6421';
print $str, "\n"; # Hello, World!