unpack関数で部分文字列抽出
substr関数でなくても、unpack関数で文字列の部分抽出が可能です。
ただし、Unicode(マルチバイトデータ)文字列では、期待通りに動きません。
unpack(TEMP, EXPR) # 文字列EXPRを受け取って、TEMPに従って位置を決める。
TEMP文字
- x -> スキップするバイト数
- X -> スキップバックするバイト数
- A -> 抽出するバイト数
#!/usr/bin/perl use strict; use warnings; my $string = "There\'s More Than One Way To Do It"; my $a = unpack("x8 A4", $string); # 8bytesスキップして、4bytes抽出 print "$a\n"; # More my $b = unpack("x22 X4 A3", $string); # 22bytesスキップして、4bytes戻り、3bytes抽出 print "$b\n"; # One