Perl : pack/unpack

perlのpack/unpackの使い方を理解した。

pack
構造体→固定長レコード
unpack
固定長レコード→構造体

という変換のために利用する。
デリミタで区切られたレコードを変換するのに、split/joinを使うのと対照的だ。

      • -

で、これが理解できたので、perlのurldecodeのイディオムも理解したわけで、

@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  ...
}