$ echo AB | perl -lpe '$_=unpack"B*"'
0100000101000010
$ echo 0100000101000010 | perl -lpe '$_=pack"B*",$_'
AB
-
-e expressionavalia a expressão dada comoperlcode -
-p:sedmode. 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 codefunciona comosed code, exceto que éperlem vez desedcode. -
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. -
packfaz o reverso deunpack. Vejaperldoc -f packpara 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 " " .