$ echo AB | perl -lpe '$_=unpack"B*"'
0100000101000010
$ echo 0100000101000010 | perl -lpe '$_=pack"B*",$_'
AB
-
-e expression
avalia a expressão dada comoperl
code -
-p
:sed
mode. A expressão é avaliada para cada linha de entrada, com o conteúdo da linha armazenado na variável$_
e impresso após a avaliação da expressão . -
-l
: ainda mais comosed
: em vez da linha completa, somente o conteúdo da linha (ou seja, sem o delimitador de linha) está em$_
(e uma nova linha é adicionada de volta na saída). Portanto,perl -lpe code
funciona comosed code
, exceto que éperl
em vez desed
code. -
unpack "B*"
funciona na variável$_
por padrão e extrai seu conteúdo como uma sequência de bits que vai do bit mais alto do primeiro byte até o bit mais baixo do último byte. -
pack
faz o reverso deunpack
. Vejaperldoc -f pack
para detalhes.
com espaços:
$ echo AB | perl -lpe '$_=join " ", unpack"(B8)*"'
01000001 01000010
$ echo 01000001 01000010 | perl -lape '$_=pack"(B8)*",@F'
AB
(assume que a entrada está em blocos de 8 bits (0-padded)).
Com unpack "(B8)*"
, extraímos 8 bits por vez e unimos as sequências resultantes com espaços com join " "
.