/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
grouping regexp
Fra : dudsen


Dato : 23-07-02 20:15

jeg har følgende udtryk /(.*\")(.*)\@(.*)(\")/ derudover har jeg en
fil hvordan får jeg den til at udskrive $2 ug $3 alså noget i stil
med print
open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
$davs = <INPUTFIL>
if ($davs =~ /(.*\")(.*)\@(.*)(\")/) {print "'$2'"};


 
 
Lars Balker Rasmusse~ (23-07-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 23-07-02 20:57

dudsen <dudsen@gjk.dk> writes:
> jeg har følgende udtryk /(.*\")(.*)\@(.*)(\")/ derudover har jeg en
> fil hvordan får jeg den til at udskrive $2 ug $3 alså noget i stil
> med print
> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
> $davs = <INPUTFIL>
> if ($davs =~ /(.*\")(.*)\@(.*)(\")/) {print "'$2'"};

open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
while ($davs = <INPUTFIL>) {
if ($davs =~ /(.*?\")(.*?)\@(.*?)(\")/) {
print "'$2 og $3'";
}
}

--
Lars Balker Rasmussen "Special is bad."

dudsen (23-07-2002)
Kommentar
Fra : dudsen


Dato : 23-07-02 21:44

Lars Balker Rasmussen wrote:

> dudsen <dudsen@gjk.dk> writes:
>> jeg har følgende udtryk /(.*\")(.*)\@(.*)(\")/ derudover har jeg
>> en fil hvordan får jeg den til at udskrive $2 ug $3 alså noget i
>> stil med print
>> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
>> $davs = <INPUTFIL>
>> if ($davs =~ /(.*\")(.*)\@(.*)(\")/) {print "'$2'"};
>
> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
> while ($davs = <INPUTFIL>) {
> if ($davs =~ /(.*?\")(.*?)\@(.*?)(\")/) {
> print "'$2 og $3'";
> }
> }

giver følgende fejlmedelelse

Backslash found where operator expected at ./perl.pl line 4, near
"*?\"
(Missing operator before \?)
syntax error at ./perl.pl line 4, near "(."
Can't find string terminator '"' anywhere before EOF at ./perl.pl
line 4.

er der nogen af jer det kan decifrere det tl hvad der er galt.


Lars Balker Rasmusse~ (23-07-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 23-07-02 22:24

dudsen <dudsen@gjk.dk> writes:
> Backslash found where operator expected at ./perl.pl line 4, near
> "*?\"
> (Missing operator before \?)
> syntax error at ./perl.pl line 4, near "(."
> Can't find string terminator '"' anywhere before EOF at ./perl.pl
> line 4.
>
> er der nogen af jer det kan decifrere det tl hvad der er galt.

Non-greedy .* (med ? efter *) kom først med i en relativt ny version af
perl. Hvad siger din "perl -v"? Uanset hvad er der sket meget siden
dengang, så det er en god ide at opgradere.
--
Lars Balker Rasmussen "Special is bad."

dudsen (24-07-2002)
Kommentar
Fra : dudsen


Dato : 24-07-02 12:01

Lars Balker Rasmussen wrote:

> dudsen <dudsen@gjk.dk> writes:
>> Backslash found where operator expected at ./perl.pl line 4, near
>> "*?\"
>> (Missing operator before \?)
>> syntax error at ./perl.pl line 4, near "(."
>> Can't find string terminator '"' anywhere before EOF at ./perl.pl
>> line 4.
>>
>> er der nogen af jer det kan decifrere det tl hvad der er galt.
>
> Non-greedy .* (med ? efter *) kom først med i en relativt ny version
> af
> perl. Hvad siger din "perl -v"? Uanset hvad er der sket meget
> siden dengang, så det er en god ide at opgradere.

This is perl, v5.6.1 built for i386-linux
Men hvordan spender det overens med at den brokker sig over en
manglende string terminator.
iøvrigt gøt det ingen forskel at fjerne ?

Lars Balker Rasmusse~ (24-07-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 24-07-02 12:16

dudsen <dudsen@gjk.dk> writes:
> This is perl, v5.6.1 built for i386-linux
> Men hvordan spender det overens med at den brokker sig over en
> manglende string terminator.
> iøvrigt gøt det ingen forskel at fjerne ?

Det ved jeg ikke - det kodede jeg postede virker fint med perl 5.6.1.
Det er åbenbart ikke det kode du har i perl.pl?
--
Lars Balker Rasmussen                  "S.M.R.T."

dudsen (24-07-2002)
Kommentar
Fra : dudsen


Dato : 24-07-02 13:23

Lars Balker Rasmussen wrote:

> dudsen <dudsen@gjk.dk> writes:
>> This is perl, v5.6.1 built for i386-linux
>> Men hvordan spender det overens med at den brokker sig over en
>> manglende string terminator.
>> iøvrigt gøt det ingen forskel at fjerne ?
>
> Det ved jeg ikke - det kodede jeg postede virker fint med perl
> 5.6.1. Det er åbenbart ikke det kode du har i perl.pl?

nu får du et prcist dump af perl.pl
#!/usr/bin/perl -w
open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
while ($davs = <INPUTFIL>) {
if ($davs =~ (.*?\")(.*?)\@(.*?)(\")) {
print "'$2 og $3'";
}
}
og dav indeholder
POSTMASTER=&quot"postmaster@domain.dk"

er det der fejlen er

Lars Balker Rasmusse~ (24-07-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 24-07-02 13:28

dudsen <dudsen@gjk.dk> writes:
> nu får du et prcist dump af perl.pl
> #!/usr/bin/perl -w
> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
> while ($davs = <INPUTFIL>) {
> if ($davs =~ (.*?\")(.*?)\@(.*?)(\")) {
> print "'$2 og $3'";
> }
> }

Det var heller ikke det jeg skrev - jeg gætter på at KNode skifter ord
mellem / ud med /italic/ bogstaver, hvorfor dit regex ikke er pakket
ind i /.
--
Lars Balker Rasmussen                  "S.M.R.T."

dudsen (24-07-2002)
Kommentar
Fra : dudsen


Dato : 24-07-02 14:22

Lars Balker Rasmussen wrote:

> dudsen <dudsen@gjk.dk> writes:
>> nu får du et prcist dump af perl.pl
>> #!/usr/bin/perl -w
>> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
>> while ($davs = <INPUTFIL>) {
>> if ($davs =~ (.*?\")(.*?)\@(.*?)(\")) {
>> print "'$2 og $3'";
>> }
>> }
>
> Det var heller ikke det jeg skrev - jeg gætter på at KNode skifter
> ord mellem / ud med /italic/ bogstaver, hvorfor dit regex ikke er
> pakket ind i /.

Ja det var den den burde jeg altså have fanget selv pinligt.
Nå men det får den kun til at give en nu fejlmedelelse nemlig
Name "main::filnavn" used only once: possible typo at ./perl.pl line
2.

Lars Balker Rasmusse~ (24-07-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 24-07-02 14:31

dudsen <dudsen@gjk.dk> writes:
> >> nu får du et prcist dump af perl.pl
> >> #!/usr/bin/perl -w
> >> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
> >> while ($davs = <INPUTFIL>) {
> >> if ($davs =~ /(.*?\")(.*?)\@(.*?)(\")/) {
> >> print "'$2 og $3'";
> >> }
> >> }
>
> Ja det var den den burde jeg altså have fanget selv pinligt.
> Nå men det får den kun til at give en nu fejlmedelelse nemlig
> Name "main::filnavn" used only once: possible typo at ./perl.pl line
> 2.

Jeg gider ikke debugge din kode for dig - du har selv sat -w på, og du
har selv skrevet die-beskeden.
--
Lars Balker Rasmussen                  "S.M.R.T."

Henrik Christian Gro~ (24-07-2002)
Kommentar
Fra : Henrik Christian Gro~


Dato : 24-07-02 13:39

dudsen <dudsen@gjk.dk> writes:

> #!/usr/bin/perl -w
> open (INPUTFIL, "dav") || die "kunne ikke åbne $filnavn: $!";
> while ($davs = <INPUTFIL>) {
> if ($davs =~ (.*?\")(.*?)\@(.*?)(\")) {

Du skal have /'er omkring højresiden i =~.

> print "'$2 og $3'";
> }
> }

..Henrik

--
Min signatur er taget på sommerferie.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste