LINUX.ORG.RU

История изменений

Исправление alex0x08, (текущая версия) :

print спокойно пишет бинарные данные, вот из моей же статьи про встроенный бинарник:

 my $bin = `echo "'"$bin_encoded"'" | base64 -d | gunzip`;
 print $fh $bin;

Так что задача сводится к итерации массиву и вызову print в цикле с преобразованием в бинарный вид.

Или вот выдержка из Perl Cookbook:

To convert a Perl integer to a text string of ones and zeros, first pack the integer into a number in network byte order[3] (the «N» format), then unpack it again bit by bit (the «B32» format).

sub dec2bin {
    my $str = unpack("B32", pack("N", shift));
    $str =~ s/^0+(?=\d)//;   # otherwise you'll get leading zeros
    return $str;
}

To convert a text string of ones and zeros to a Perl integer, first massage the string by padding it with the right number of zeros, then just reverse the previous procedure.

sub bin2dec {
    return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}

Исходная версия alex0x08, :

print спокойно пишет бинарные данные, вот из моей же статьи про встроенный бинарник:

 my $bin = `echo "'"$bin_encoded"'" | base64 -d | gunzip`;
 print $fh $bin;

Так что задача сводится к итерации массиву и вызову print в цикле с преобразованием в бинарный вид.