Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

concatenazione strighe

1 view
Skip to first unread message

liftman

unread,
Feb 16, 2015, 10:56:23 AM2/16/15
to
Magari č una stronzata (e di sicuro lo č...), ma non riesco a venirne fuori.
Lo scopo č cambiare una parte di un indirizzo web, ricevendo la parte
"variabile" attraverso un comando in un canale IRC, quindi un indirizzo
tipo:

www.pincopallo.it/xxxxxx.php dove "xxxxxx" č la parte soggetta al
cambiamento

quindi ho scritto questo:

$temp = $4; # <---- questo viene correttamente estrapolato dal comando
attraverso una regex
$sito = "www.pincopallo.it/" . $temp . ".php";

supponendo di inviare "pippo" la stringa risultante diventerebbe:

"www.pincopallo.it/pippo"

a questo punto ho pensato che insieme a "pippo" restasse il \n ed ho
modificato la prima riga cosě:

$temp = chomp $4;

ma il risultato non č quello che mi aspettavo....

"www.pincopallo.it/0,php"

Se perň faccio lo stesso "giochino" usando un input da tastiera, magicamente
funziona come mi aspetterei:

my $temp = <STDIN>;
chomp $temp;
my $sito = "www.pincopallo.it/" . $temp . "\.php\r\n";
print $sito;

liftman@liftman:~/scripts$ perl -w test.pl
pippo
www.pincopallo.it/pippo.php

Un'idea?

--
Fri(END), Boyfri(END), Girlfri(END), Bestfri(END). Everything has an END
except...Fam(ILY)! It Has 3 Letters that say I LOVE YOU

220284

unread,
Feb 16, 2015, 2:32:07 PM2/16/15
to
Il giorno Mon, 16 Feb 2015 16:56:21 +0100
"liftman" <liftman_...@moredifficult.org> ha scritto:

[...]

> $temp = chomp $4;

http://perldoc.perl.org/functions/chomp.html
"If you chomp a list, each element is chomped, and the total number of
characters removed is returned." Se ti esce 0 vuol dire che non c'e' \n
alla fine di $4 (o che hai settato diversamente $/).

Ad ogni modo per togliere il \n al fondo dovresti mettere:

chomp $4; $temp=$4;
oppure
$temp=$4; chomp $temp;
oppure
chomp($temp = $4);

In ogni caso ottieni $temp senza \n al fondo (ma nel primo esempio
l'avrai tolto anche da $4).

Nota che nella prova con input da tastiera "chompi" direttamente $temp
mel modo corretto.

--
220284

liftman

unread,
Feb 16, 2015, 5:39:03 PM2/16/15
to

"220284" <220...@email.it> ha scritto nel messaggio
news:20150216203203.08c44958@freisa...

> characters removed is returned." Se ti esce 0 vuol dire che non c'e' \n
> alla fine di $4 (o che hai settato diversamente $/).

In effetti č cosě, probabilmente perchč le prove le ho fatte usando Mirc che
č un programma per windows ed evidentemente non inserisce il ritorno a capo
alla fine della riga, ma qualcos'altro (forse un carriage return?) e chomp
non ha effetto.

> Ad ogni modo per togliere il \n al fondo dovresti mettere:
>
> chomp $4; $temp=$4;
> oppure
> $temp=$4; chomp $temp;
> oppure
> chomp($temp = $4);
>
> In ogni caso ottieni $temp senza \n al fondo (ma nel primo esempio
> l'avrai tolto anche da $4).

perň anche cosě non funziona (ho provato tutte le combinazioni possibili..)
per il problema di cui sopra, quindi ho usato chop

my $temp = $4;
chop $temp;

perchč usare chop direttamente su $4 mi ritornava errore: Modification of a
read-only value attempted at ./bot.pl line 95, <GEN0> line 30.

> Nota che nella prova con input da tastiera "chompi" direttamente $temp
> mel modo corretto.

si, ma la prova l'ho fatta direttamente da linux :-)
Comunque grazie per l'interessamento!

220284

unread,
Feb 17, 2015, 5:08:01 AM2/17/15
to
Il giorno Mon, 16 Feb 2015 23:39:00 +0100
"liftman" <liftman_...@moredifficult.org> ha scritto:

> In effetti è così, probabilmente perchè le prove le ho fatte usando
> Mirc che è un programma per windows ed evidentemente non inserisce
> il ritorno a capo alla fine della riga, ma qualcos'altro (forse un
> carriage return?) e chomp non ha effetto.

Il carattere "a capo" (o EOL, end of line) e' diverso su sistemi
operativi diversi: *nix e altri usano LF (0xA); i vecchi Apple/MAC e
altri usano CR (0xD); Win e altri ancora usano CR+LF (0xD0xA). E a
volte, passando un file da un SO ad un altro, bisogna convertire l'EOL.

> Comunque grazie per l'interessamento!

Prego. Un po' di vita su questo NG non fa male...

--
220284

0 new messages