ELF Fileをreadをして、 substrで文字列のように切りだし て、unpackでPerlのデータ構造に 変換することで実現 - unpack: 指定されたバイナリデータを テンプレート文字列に合わせてPerlの データ構造に変換する組み込み関数 my $byte_offset = 0; my $byte_range = 16;# ELFヘッダは16バイト # e_identをパース my ( $magic, $class, $endian, $version, $abi, $abi_version ) = unpack( 'A4C3A5C2', substr( $data, $byte_offset, $byte_offset + $byte_range ) ); $byte_offset += $byte_range; $byte_range = 32; # 細かいのは中略 ... # ELFファイルのサイズなどを取得 my ($e_type, $e_machine, $e_version, $e_entry,$e_phoff, $e_shoff, $e_flags, $e_ehsize, $e_phentsize, $e_phnum, $e_shentsize, $e_shnum, $e_shstrndx)= unpack( 'S S L Q Q Q L S S S S S S', substr( $data, $byte_offset, $byte_offset + $byte_range ) ); cf. https://github.com/takehaya/Sys-Ebpf/blob/main/lib/Sys/Ebpf/Elf/Parser.pm#L60