Como siempre con Perl TIMTOWTDI.
Pensé en enviar varias opciones, y mostrar cómo se verían si se escribieran normalmente. Si desea saber más sobre las opciones de línea de comando, perldoc perlrun
es un recurso útil.
Todos estos resultados la misma cosa. Con la excepción de que algunos de ellos no imprimen una nueva línea al final.
echo '48 54 54 50' | perl -0x20 -pe'$_=chr hex$_'
echo '48 54 54 50' | perl -0x20 -ne'print chr hex$_'
echo '48 54 54 50' | perl -0777 -anE'say map chr,map hex,@F'
echo '48 54 54 50' | perl -0777 -anE'say map{chr hex$_}@F'
echo '48 54 54 50' | perl -0apple'$_=chr hex$_' -0x20
echo '48 54 54 50' | perl -apple'$_=join"",map{chr hex}@F'
echo '48 54 54 50' | perl -lanE'say map{chr hex}@F'
A continuación se muestran algunos de los ejemplos que se verían si se escribieran normalmente. Si quieres saber qué hace el resto de ellos, definitivamente mira perldoc perlrun
.
perl -0x20 -pe'$_=chr hex$_'
Este es uno es bastante sencillo. Es quizás el mejor ejemplo aquí, y también es el más corto. Finge que los espacios se usan para separar líneas, de modo que solo hay una letra para tratar dentro del ciclo.
# perl -0x20 -pe'$_=chr hex$_'
$/ = " "; # -0 (input separator)
while(<>){
$_ = chr hex $_;
} continue {
print $_;
}
perl -0apple'$_=chr hex$_' -0x20
éste tiene algunas opciones de línea de comandos que no hacen nada útil.
- La primera opción es
-0
allí para que -l
establece el separador de salida a una cadena vacía. que es el predeterminado para el separador de salida.
- Hay dos opciones de
-p
donde uno habría sido suficiente.
- La opción
-a
configura la matriz @F
, pero en realidad no la usamos.
Básicamente he usado -a
-l
y un segundo -p
por lo que las opciones significarían manzana. De lo contrario, este es el mismo que el último ejemplo.
echo '48 54 54 50' | perl -0x20 -pe'$_=chr hex$_'
# perl -0apple'$_=chr hex$_' -0x20
$/ = ""; # -0 (input separator)
$\ = $/; # -l (output separator)
$/ = " "; # -0x20 (input separator)
while(<>){
@F = split " ", $_; # -a (unused)
$_ = chr hex $_;
} continue {
print $_;
}
perl -lanE'say map{chr hex}@F'
que pensé que ya se sueltan de manzana, que bien podría significar Lane.
-l
no es muy útil, porque ya estamos usando say
.
- Usado
-E
en lugar de -e
para que podamos usar say
.
# perl -lanE'say map{chr hex}@F'
$\ = $/; # -l (output separator set to "\n")
while(<>){
@F = split " ", $_; # -a
say map { chr hex $_ } @F;
}
'perl -lnE 'y/// d; decir paquete "H *", $ _ '' – hobbs