Come sempre con Perl TIMTOWTDI.
ho pensato di presentare diverse opzioni, e mostrare ciò che sarebbe simile se fossero scritte normalmente. Se vuoi saperne di più sulle opzioni della riga di comando, perldoc perlrun
è una risorsa utile.
Questi generano tutti la stessa cosa. Con l'eccezione che alcuni di loro non stampano una nuova riga alla fine.
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'
Il seguente è ciò che alcuni degli esempi apparirebbero se fossero scritti normalmente. Se vuoi capire cosa fanno gli altri, guarda sicuramente allo perldoc perlrun
.
perl -0x20 -pe'$_=chr hex$_'
Questo è uno è abbastanza semplice. È forse il miglior esempio qui, ed è anche il più breve. Finge che gli spazi siano usati per separare le linee, in modo che ci sia solo una lettera da trattare all'interno del ciclo.
# perl -0x20 -pe'$_=chr hex$_'
$/ = " "; # -0 (input separator)
while(<>){
$_ = chr hex $_;
} continue {
print $_;
}
perl -0apple'$_=chr hex$_' -0x20
Questo ha alcune opzioni della riga di comando che non fanno niente di utile.
- La prima opzione
-0
c'è così che -l
imposta il separatore di uscita su una stringa vuota. Quale è in realtà l'impostazione predefinita per il separatore di uscita.
- Ci sono due opzioni
-p
in cui uno sarebbe sufficiente.
- L'opzione
-a
imposta l'array @F
, ma in realtà non lo usiamo.
Fondamentalmente ho usato -a
-l
e un secondo -p
in modo che le opzioni sarebbero incantesimo mela. Altrimenti questo è uguale all'ultimo esempio.
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'
ho pensato che già farro mela, tanto vale precisare Lane.
-l
non è molto utile, perché stiamo già utilizzando say
.
- Utilizzato
-E
anziché -e
in modo da poter utilizzare 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; dì pacco "H *", $ _ '' – hobbs