Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$str = 'a'x100;
cmpthese (300, {'Arr copy' => sub {
my @bin = ();
for (my $i=0; $i < length($str); $i++) {
@bin = (@bin, split ('', sprintf "%08b", ord(substr($str, $i, 1))));
}
},
'String' => sub {
my $bin = '';
my @bin = ();
my @t = split (//, $str);
for (my $i=0; $i <= $#t; $i++) {
$bin .= sprintf ("%08b", ord($t[$i]));
}
@bin = split '', $bin;
},
'Arr push' => sub {
my @bin = ();
for (my $i=0; $i < length($str); $i++) {
push @bin, split ('', sprintf "%08b", ord(substr($str, $i, 1)));
}
}
});
Rate Arr copy String Arr push
Arr copy 17.0/s -- -98% -99%
String 800/s 4617% -- -37%
Arr push 1277/s 7427% 60% --
my $str = 255; # or other .. $str = 'a';
my @now = (1,0);
$str = ($str & 252) | (($now[0] << 1) | $now[1]);
Однако, Perl не предоставляет возможности работать с файлом как с последовательностью битов, данные считываются минимум побайтово.

Стеганография на Perl