Newsgroup: it.comp.lang.perl
Titolo: invertire una stringa

Come faccio a invertire una stringa
es: CIAO voglio che diventi OAIC
Grazie

 es: CIAO voglio che diventi OAIC
perl -e 'print reverse split//,"CIAO"'
dunque
con
split//,"CIAO"
ottieni le singole lettere di CIAO
con
reverse
le inverti
e con
print
le stampi
:))

 es: CIAO voglio che diventi OAIC
??otitrevni otset nu noc eraf ived ic ehc am ,he asucs iop E
.arposottos rotinom li erettem atsab it otset nu eritrevni rep ,ammosni
,idrat è aro aM
!acitametam id olrap ,aifam id olrap non ,oN .ilellarap itnemagelloc e
ilognairt ,itnegnat
,irottev us otasab ocitametam oloclac ecilpmes nu id àteirporp el odnacilppa
otatnemelpmi
eresse ebbertop ,setaG id olleuq a ovitanretla omtirogla nU .adehaklA id
orbmem nu essof
setaG lliB ehc ottepsos li odnaerc ,eroplacs ottaf ah aiziton aL .abara
augnil ni otallatsni
avarbmes swodniW ?otatlusiR .cce ocsid lus inoizitrap elled enidro'l ,iroloc
ied enidro'l
,potksed lus enoci elled enidro'l ehcna odnetrevni etnematattepsani mar al
attut otitrevni
ah reversE odnamoc li ,tnomdeR a apmats aznerefnoc anu da isatunet
enoizatneserp alla
,ittafnI .kcap ecivres i itacilbbup onognev non ehc a onif erpmes onocsillaf
tfosorcim
ittodorp i adarts us tset ia ,otilos la emoc aM .etybagig nu a onif mar
alled otunetnoc
li ottut ehcna eritrevni 'oup ehc onocid ,
TEN.BV
 ni otatnemelpmi otats è ehc
"reversE"
otamaihc ehgnirts eritrevni rep omtirogla ovoun nu otsoporp ah etnemamitlu
tfosorciM aL
.setyb ihcop id olos onare immargorp i arolla am ,enoizammargorp alled
irobla
ilga ihcsedet iad otasu odotem nu è otseuQ .ottirid ammargorp li e atitrevni
agnirts al
isravort e ammargorp li ovoun id eritrevni iop ,attirid agnirts al erevircs
,ammargorp li
ottut eritrevni è itnat ied onu ...agnirts anu eritrevni rep idom itnat onos
ic ,euqnuD

 perl -e 'print reverse split//,"CIAO"'
Ehm, leggendo la faq su perldoc:
http://www.perldoc.com/perl5.8.0/pod/perlfaq4.html#How-do-I-reverse-a-string-
la cosa è ancora più semplice:
use strict;
my $stringa="CIAO";
my $contraria=reverse $stringa;
print $contraria,$/;


http://www.perldoc.com/perl5.8.0/pod/perlfaq4.html#How-do-I-reverse-a-string-
Sì, però, almeno per me, un:
   reverse LIST
   reverse STR   
sarebbe stato un pelino più chiaro. E bisogna ammettere che la frase
"concatenates the elements of LIST and returns a string value with all
characters in the opposite order", se da una parte giustifica la
definizione "reverse LIST", si presta anche ad essere fraintesa.
Ciao.

grazie 1000 non ero riuscito a trovarla e ho completato come segue.
$data='01-01-2003';
$oratmp='10:20:22';
        $oratmp=~s/://g;
        @prova = (reverse (split /-/,$data),$oratmp);
        $aggdata = join('',@prova);
cosi' ottengo una data/ora come un numero crescente 20030101102022
Si riesce a fare il tutto in una sola riga?


Eeeh!! Eccome!:
   $aggdata =  "20030101102022";
Scherzi a parte, senza sapere come ottieni quel $data e quel $oratemp, e
perché devono avere quel formato (e perché mai si dovrebbe fare tutto in
una riga) non è che si possa dire molto.
Un altro modo per fare la cosa potrebbe essere:
   $data='01-01-2003';
   $oratmp='10:20:22';
   $data =~ s/(\d+)-(\d+)-(\d+)/$3$2$1/;
   $oratmp=~s/://g;
   $data .= $oratmp;
Se proprio proprio hai bisogno di risparmiare delle righe, si può fare
anche così:
   $data='01-01-2003';
   $oratmp='10:20:22';
   $aggdata = $data . $oratmp;
   $aggdata =~ s/(\d+)-(\d+)-(\d+)(\d+):(\d+):(\d+)/$3$2$1$4$5$6/;
Comunque, dai un'occhiata a qualcuno degli innumerevoli moduli per gestire
date e ore, che magari trovi qualcosa che ti risolve meglio il problema.
Ciao.