/ 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
Hjelp!!
Fra : tlh


Dato : 26-02-03 15:36

Jeg er ny begynder, i perl, men er sprunget ud i et forsøg på at lave en
formmailer. Det meste er 'cut-and-pasted' fra WCmail.pl, fra
http://webcafe.dk, hvor jeg i øvrigt også har lært det perl jek kan.
Jeg får en 500 Internal Server Error, når jeg tester scriptet, og jeg kan
ikke finde fejlen (jeg har prøvet at fjerne alt andet en bokken der sender
e-mailen, og udfyldt to, from mm med min egen e-mail adresse, og den kunne
godt sende)
Her er scriptet:

#!/usr/bin/perl

if ($ENV{'HTTP_REFERER'} =~ /.tlh\.amok\.dk/){
&behandel_input;
} # if

else {
⊤
print "<h1>Nix, få din egen!</h1>\n";
print "<p>mail.pl modtager kun data fra <b>tlh.amok.dk</b>!!!</p>\n";
&bund;
exit;
} # else


############################################################################
######
############### Behandel input, opdel_i_par
######################################

sub behandel_input {

#### Med GET ####
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
# Deler inputtet op i par
@data_par = split(/&/, $ENV{'QUERY_STRING'});
}
#### Med POST ###
elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {

### Deler input sendt via POST
read(STDIN, $bufferdrengen, $ENV{'CONTENT_LENGTH'});
@data_par = split(/&/, $bufferdrengen);

### De enkelte dele deles op i navn/indhold
foreach $enkelt_par (@data_par) {
($navn, $indhold) = split(/=/, $enkelt_par);

### Indholdet bliver gjort fordøjeligt
$indhold =~ tr/+/ /;
$indhold =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$indhold =~ s/\cM\n/\n/g;

### HTML ? ### $indhold =~ s/<([^>]|\n)*>//g;
### SSI ? #### $indhold =~ s/<!--(.|\n)*-->//g;

### og sorteret
$IND{$navn} = $indhold;
} # foreach


foreach (keys(%IND)) {

if($_ eq 'recipient') {
$recipient = "$IND{$_}";
}
elsif($_ eq 'email') {
$email = "$IND{$_}";
}
elsif($_ eq 'realname') {
$realname = "$IND{$_}";
}
elsif($_ eq 'cc') {
$cc = "$IND{$_}";
}
elsif($_ eq 'bcc') {
$bcc = "$IND{$_}";
}
elsif($_ eq 'subject') {
$subject = "$IND{$_}";
}
elsif($_ eq 'content') {
$content = "$IND{$key}";
}
elsif($_ eq 'redirect') {
$redirect = "$IND{$_}";
}
elsif($_ eq 'postcard') {
$postcard = "$IND{$_}";
}

else {
$andet{$_} = $IND{$_};
}

} # foreach

############################################################################
######
############### Tjek værdier
#####################################################

if ($subject eq '') {
$subject = 'E-mail fra tlh.amok.dk'
}; else{};

if ($redirect eq '') {
$redirect = $ENV{HTTP_REFERER}
}; else{};

if ($email eq '') {
$email = 'formmail@tlh.amok.dk'
}; else{};

if (!$realname eq '') {
$realname = $email
}; else{};

if (!$content eq '') {
$content = 'Der er intet indhold!!'
}; else{};



&send;

} # sub behandel_input


############################################################################
######
############### Send med SendMail
################################################

sub send{

######### HEAD ################################

open(MAIL, "|/usr/lib/sendmail -t") || die &fejl;

print MAIL "From: $realname <${email}>\n";
print MAIL "To: $recipient <${recipient}>\n";

unless (cc eq '') {
print MAIL "Cc: ${cc}\n";
} # unless

unless (bcc eq '') {
print MAIL "Bcc: ${bcc}\n";
} # unless

print MAIL "Subject: $subject\n\n";

print MAIL "$content\n";

###postcard

print MAIL "---------------------\n";
print MAIL 'Gratis hilsen sendt fra http://tlh.amok.dk';

close(MAIL);

print "Location: $redirect\n\n";

exit;} # sub send

############################################################################
######
############### Fejl side og log af fejl
#########################################

######### Skriver fejl side ###################
sub fejl{&top;

print "<h1>Der opstod en fejl!!</h1>";
print "<p>Der opstod en fejl under kørslen af scriptet, <a
href="http://tlh.amok.dk/kontakt.htm>kontakt mig,</a> hvis problemet
fortsætter, tak.</p>";

print "<p><b>Fejlen var:</b></p>";
print "<p><i>$!</i></p>";

######### Logger fejl'en ######################

&tid;

open(LOG, ">>mail-fejl-log.log");

print LOG "------- Den ${dato}, klokken $tid -------";
print LOG "$!\n\n";

close(LOG);

exit;} # sub fejl

############################################################################
######
############### Tid og dato
######################################################

sub tid{
$tid=timelocal($sek,$min,$time,$dag,$mdr,$aar);
$rigtigDag = $dag + 1;
$rigtigMdr = $mdr + 1;

$dato = "$rigtigDag/$rigtigMdr-$aar";
$tid = "$time:$min:$sek";

} # tid


############################################################################
######
############### HTML-top og -bund
################################################

sub top {
print "Content-type: text/html\n\n";

print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"DTD/xhtml1-transitional.dtd\">\n";
print "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"da\">\n";
print "<head>\n";
print "<link rel=\"stylesheet\" type=\"text/css\"
href=\"../wwwroot/div/style.css\" />\n";
print "<title>mail.pl</title>\n";
print "</head>\n";
print "<body>\n";
} # sub top

sub bund {
print "</body>\n";
print "</html>";
} # sub bund


--
MVH:
Thomas L. Hansen,
http://tlh.amok.dk
ICQ-nr.: 164614060



 
 
Peter Makholm (26-02-2003)
Kommentar
Fra : Peter Makholm


Dato : 26-02-03 15:46

"tlh" <tlh@softhome.net> writes:

> Jeg er ny begynder, i perl, men er sprunget ud i et forsøg på at lave en
> formmailer. Det meste er 'cut-and-pasted' fra WCmail.pl, fra
> http://webcafe.dk, hvor jeg i øvrigt også har lært det perl jek kan.

Af en eller anden grund kan webcafe.dk åbenbart ikke lide CGI.pm, men
brug det alligevel. Det er meget lettere og giver bedre mulighed for
at hjælpe dig.

I øvrigt bør du skrive noget mere sigende i subject-feltet. 'Hjelp!!'
siger ikke særlig meget om hvad det er du har problemer med.

--
Peter Makholm | If you can't do any damage as root, are you still
peter@makholm.net | really root?
http://hacking.dk | -- Derek Gladding about SELinux

Adam Sjøgren (26-02-2003)
Kommentar
Fra : Adam Sjøgren


Dato : 26-02-03 18:05

On Wed, 26 Feb 2003 15:36:15 +0100, tlh wrote:

> Det meste er 'cut-and-pasted' fra WCmail.pl, fra http://webcafe.dk,
> hvor jeg i øvrigt også har lært det perl jek kan.

Holdaop. Jeg vil anbefale dig at checke nogle tutorials eller bøger af
nyere dato.

> Jeg får en 500 Internal Server Error, når jeg tester scriptet, og
> jeg kan ikke finde fejlen (jeg har prøvet at fjerne alt andet en
> bokken der sender e-mailen, og udfyldt to, from mm med min egen
> e-mail adresse, og den kunne godt sende) Her er scriptet:

> #!/usr/bin/perl

[...]

Jeg gemte dit script i hep.pl, og:

$ perl -c hep.pl
syntax error at hep.pl line 95, near "; else"
syntax error at hep.pl line 99, near "; else"
hep.pl had compilation errors.
$

Har du overhovedet prøvet at køre scriptet på en kommandolinie?

Nå, men det er altså de her konstruktioner:

> if ($subject eq '') {
> $subject = 'E-mail fra tlh.amok.dk'
> }; else{};

den er gal med.


Følg Peters råd og prøv CGI.pm i stedet for webcafe.dk. Bedre,
nemmere, sikrere, tørrere.


On Wed, 26 Feb 2003 15:46:20 +0100, Peter Makholm wrote:

> I øvrigt bør du skrive noget mere sigende i
> subject-feltet. 'Hjelp!!' siger ikke særlig meget om hvad det er du
> har problemer med.

Det indikerer højest en forkærlighed for norsk


Mvh.

--
"I try to make everyone's day a little more surreal" Adam Sjøgren
asjo@koldfront.dk

tlh (26-02-2003)
Kommentar
Fra : tlh


Dato : 26-02-03 20:59


> Følg Peters råd og prøv CGI.pm i stedet for webcafe.dk. Bedre,
> nemmere, sikrere, tørrere.

Hvad er CGI.pm ????
Spøger jeg dumt nu??




Adam Sjøgren (26-02-2003)
Kommentar
Fra : Adam Sjøgren


Dato : 26-02-03 21:16

On Wed, 26 Feb 2003 20:58:51 +0100, tlh wrote:

>> Følg Peters råd og prøv CGI.pm i stedet for webcafe.dk. Bedre,
>> nemmere, sikrere, tørrere.

> Hvad er CGI.pm ????

<http://search.cpan.org/author/JHI/perl-5.8.0/lib/CGI.pm>

Det er det modul der gør, at du kan udskifte en god del af dit script
med:

use CGI;
my $query=new CGI;

Kig i manualen med 'perldoc CGI'.

> Spøger jeg dumt nu??

Lidt...?


Mvh.

--
"I try to make everyone's day a little more surreal" Adam Sjøgren
asjo@koldfront.dk

tlh (05-03-2003)
Kommentar
Fra : tlh


Dato : 05-03-03 10:22

> Det er det modul der gør, at du kan udskifte en god del af dit script
> med:
>
> use CGI;
> my $query=new CGI;
>
> Kig i manualen med 'perldoc CGI'.

Mit engelsk er desværre ikke så godt (Jeg er 14 år), men kan jeg bare skifte
dette stykke ud med de der linjer?
Er der nogen der har nogle links til noget (alt muglig, dokumentation,
bøger, tutorials mm) om perl på dansk?

sub behandel_input {

#### Med POST ###
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $bufferdrengen, $ENV{'CONTENT_LENGTH'});
@data_par = split(/&/, $bufferdrengen);
}
#### Med GET ####
else {
@data_par = split(/&/, $ENV{'QUERY_STRING'});
}

### De enkelte dele deles op i navn/indhold
foreach $enkelt_par (@data_par) {
($navn, $indhold) = split(/=/, $enkelt_par);

### Indholdet bliver gjort fordøjeligt
$indhold =~ tr/+/ /;
$indhold =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$indhold =~ s/\cM\n/\n/g;

### HTML ? ### $indhold =~ s/<([^>]|\n)*>//g;
### SSI ? #### $indhold =~ s/<!--(.|\n)*-->//g;

$IND{$navn} = $indhold;
} # foreach


Jeg har desuden rettet en del fejl i mit script, men jeg får nu en hel del
fejl, jeg ikke ved hvad er når jeg kører det i en komandolinje. Fejlene ser
således ud:

Bareword found where operator expected at mail.pl line 143, near "/usr/lib"
(Missing operator before lib?)
Bareword found where operator expected at mail.pl line 145, near "print MAIL
"Fr
om"
(Might be a runaway multi-line "" string starting on line 143)
(Do you need to predeclare print?)
String found where operator expected at mail.pl line 146, near "print MAIL
""
(Might be a runaway multi-line "" string starting on line 145)
(Missing semicolon on previous line?)
Bareword found where operator expected at mail.pl line 146, near "print MAIL
"To
"
(Do you need to predeclare print?)
String found where operator expected at mail.pl line 150, near "print MAIL
""
(Might be a runaway multi-line "" string starting on line 146)
(Missing semicolon on previous line?)
Bareword found where operator expected at mail.pl line 150, near "print MAIL
"Cc
"
(Do you need to predeclare print?)
Backslash found where operator expected at mail.pl line 150, near "$cc\"
(Missing operator before \?)
String found where operator expected at mail.pl line 155, near "print MAIL
""
(Might be a runaway multi-line "" string starting on line 150)
(Missing semicolon on previous line?)
Bareword found where operator expected at mail.pl line 155, near "print MAIL
"Bc
c"
(Do you need to predeclare print?)
Backslash found where operator expected at mail.pl line 155, near "$bcc\"
(Missing operator before \?)
String found where operator expected at mail.pl line 158, near "print MAIL
""
(Might be a runaway multi-line "" string starting on line 155)
(Missing semicolon on previous line?)
Bareword found where operator expected at mail.pl line 158, near "print MAIL
"Su
bject"
(Do you need to predeclare print?)
Backslash found where operator expected at mail.pl line 158, near
"$subject\"
(Missing operator before \?)
Backslash found where operator expected at mail.pl line 158, near "n\"
String found where operator expected at mail.pl line 166, near "print MAIL
""
(Might be a runaway multi-line "" string starting on line 158)
(Missing semicolon on previous line?)
Bareword found where operator expected at mail.pl line 166, near "print MAIL
"De
r"
(Do you need to predeclare print?)
syntax error at mail.pl line 143, near "/usr/lib"
Unrecognized character \xE5 at mail.pl line 166.

Og det let redigetet script således:



#!/usr/bin/perl

############################################################################
#
############################################################################
#
###
###
### mail.pl version 1.0
###
### Lavet af Thomas L. Hansen
###
### Med inspiration fra WCmail.pl, fra WebCafe.dk
###
###
###
############################################################################
#
############################################################################
#

############################################################################
######
############### Tjekker domæne
###################################################

if ($ENV{'HTTP_REFERER'} =~ /.tlh\.amok\.dk/){
&behandel_input;
} # if

else {
&top;
print '<h1>Nix, få din egen!</h1>';
print "\n";
print '<p>mail.pl modtager kun data fra <b>tlh.amok.dk</b>!!!</p>';
&bund;
exit;
} # else


############################################################################
######
############### Behandel input, opdel_i_par
######################################

sub behandel_input {

#### Med POST ###
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $bufferdrengen, $ENV{'CONTENT_LENGTH'});
@data_par = split(/&/, $bufferdrengen);
}
#### Med GET ####
else {
@data_par = split(/&/, $ENV{'QUERY_STRING'});
}

### De enkelte dele deles op i navn/indhold
foreach $enkelt_par (@data_par) {
($navn, $indhold) = split(/=/, $enkelt_par);

### Indholdet bliver gjort fordøjeligt
$indhold =~ tr/+/ /;
$indhold =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$indhold =~ s/\cM\n/\n/g;

### HTML ? ### $indhold =~ s/<([^>]|\n)*>//g;
### SSI ? #### $indhold =~ s/<!--(.|\n)*-->//g;

$IND{$navn} = $indhold;
} # foreach

foreach (keys(%IND)) {

if($_ eq 'recipient') {
$recipient = $IND{$_};
}
elsif($_ eq 'email') {
$email = $IND{$_};
}
elsif($_ eq 'realname') {
$realname = $IND{$_};
}
elsif($_ eq 'cc') {
$cc = $IND{$_};
}
elsif($_ eq 'bcc') {
$bcc = $IND{$_};
}
elsif($_ eq 'subject') {
$subject = "$IND{$_};
}
elsif ($_ eq 'content') {
$content = $IND{$_};
}
elsif ($_ eq 'redirect') {
$redirect = $IND{$_};
}
elsif ($_ eq 'postcard') {
$postcard = $IND{$_};
}

else {
$andet{$_} = $IND{$_};
}

} # foreach

############################################################################
######
############### Tjek værdier
#####################################################

if ($subject eq '') {
$subject = 'Besvarelse ikke muglig';}
else{;}

if ($redirect eq '') {
$redirect = $ENV{HTTP_REFERER}}
else{;}

if ($email eq '') {
$email = 'Besvarelse ikke muglig@tlh.amok.dk'}
else{;}

if ($realname eq '') {
$realname = $email}
else{;}

### SPAM ? ### &spam;

&send;

} # sub behandel_input


############################################################################
######
############### Spamming filter
##################################################

sub spam {

unless ($recipient eq 'tlh@amok.dk') {
$bcc = bcc.'tlh@amok.dk';}

$content = $content.$ENV{'REMOTE_ADDR'};

}


############################################################################
######
############### Send med SendMail
################################################

sub send {

######### HEAD ################################


open(MAIL, "|/usr/lib/sendmail -t") || die &fejl;

print MAIL "From: $realname <$email>\n";
print MAIL "To: $recipient <$recipient>\n";

### CC ###
unless (cc eq '') {
print MAIL "Cc: $cc\n";
} # unless

### BCC ###
unless (bcc eq '') {
print MAIL "Bcc: $bcc\n";
} # unless

print MAIL "Subject: $subject\n\n";

### Postcard ###
if ($postcard eq '') {
print MAIL $content;
}
### Content ###
else {
print MAIL "Der er blevet sendt et postkort til dig fra $realname, gå til
http://tlh.amok.dk/cgi-bin/postkort.pl?besked=$content&postkort=$postcard,
for at se det.";
} # if-else

print MAIL "\n";

### Andet ###
unless (keys(%andet) eq ''){
foreach $key (keys(%andet) {
print MAIL "$key: $andet{$key}";
}

print MAIL "-------------------------\n";
print MAIL 'Gratis hilsen sendt fra http://tlh.amok.dk';

close(MAIL);

print "Location: $redirect\n\n";

exit;} # sub send

############################################################################
######
############### Fejl side og log af fejl
#########################################

######### Skriver fejl side ###################
sub fejl{
&top;

print "<h1>Der opstod en fejl!!</h1>";
print '<p>Der opstod en fejl under kørslen af scriptet, <a
href="http://tlh.amok.dk/kontakt.htm>kontakt mig,</a> hvis problemet
fortsætter, tak.</p>';

print '<p><b>Fejlen var:</b></p>';
print "<p><i>$!</i></p>";

&bund;
######### Logger fejl'en ######################

&tid;

open(LOG, ">>../wwwroot/cgidoc/mail.log");

print LOG "------- Den ${dato}, klokken $tid -------";
print LOG "$!\n\n";

close(LOG);


exit;} # sub fejl

############################################################################
######
############### Tid og dato
######################################################

sub tid{
$tid=timelocal($sek,$min,$time,$dag,$mdr,$aar);
$rigtigDag = $dag + 1;
$rigtigMdr = $mdr + 1;

$dato = "$rigtigDag/$rigtigMdr-$aar";
$tid = "$time:$min:$sek";

} # tid


############################################################################
######
############### HTML-top og -bund
################################################

sub top {
print "Content-type: text/html\n\n";

print '<?xml version="1.0" encoding="iso-8859-1"?>';
print "\n";
print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">';
print "\n";
print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">';
print "\n";
print '<head>';
print "\n";
print '<link rel="stylesheet" type="text/css"
href="../wwwroot/div/style.css" />';
print "\n";
print '<title>mail.pl</title>';
print "\n";
print '</head>';
print "\n";
print '<body>';
print "\n";
} # sub top

sub bund {
print "\n";
print '</body>';
print "\n";
print '</html>';
} # sub bund



Peder Skyt, Z=nospam (06-03-2003)
Kommentar
Fra : Peder Skyt, Z=nospam


Dato : 06-03-03 05:42

On Wed, 5 Mar 2003 10:22:06 +0100, "tlh" <tlh@softhome.net> wrote:

>Mit engelsk er desværre ikke så godt (Jeg er 14 år),

Du har sikkert engelsk i skolen. Skolen prøver at få *alle* til at nå
et vist (nødvendigvis lavt) normalniveau af et meget firkantet (men
velgennemtænkt) pensum; et pensum som dog næppe understøtter hvad *du*
har brug for i relation til *dine* aktuelle interesser.

Det svære i skoleindlæring er ikke at man skal lære noget, men at man
skal lære det indenfor et begrænset tidsrum og på et bestemt tidspunkt
hvor pgl. lærdom ikke nødvendigvis synes overvældende interessant
endsige relevant for ens egen livssituation.

Udenfor skolesystemet er det den enkeltes eget ansvar at vælge mål,
udnytte egne evner og tilfredsstille egne behov. Vi må selv, hver
især, opfinde vores eget personlige "pensum", som vi heldigvis når som
helst kan redefinere efter aktuelle behov.


Indenfor programmering (og nutildags heller ikke meget andet i denne
verden) kommer man desværre ikke langt uden at kunne forstå en hel del
engelsk... men på den anden side kan de fleste lære det automatisk,
bare behov og/eller interesse er tilstede - nød lærer som bekendt
nøgen kvinde at spinde.

For skrifter på fremmede sprog er den sløsede skip/gentag-metode både
populær og i almindelighed ret effektiv: Ukendte ord og begreber skal
læses, men iøvrigt *ignoreres*; læs samme tekst multiple gange, spredt
hen over f.eks. en uge - og pludselig forstår du alt det nødvendige.

Nå, færdig med dén off-topic palaver.


>jeg får nu en hel del fejl, jeg ikke ved hvad er

Der er en del uhensigtsmæssigheder i koden; bl.a. globale variable,
auto-deklarering af variable (dvs. ikke deklareret vha. "my"),
udeklarerede subs, og redefinering af en builtin ("send").

Her følger nogle (måske) gode råd, og (nederst) nogle egentlige fejl i
din kode. Håber det hjælper dig.


De første perl-statements (efter #!/usr/bin/perl) i alle dine scripts
bør være disse:
use strict;
use warnings;


Undgå så vidt muligt globale variable.

Sørg for at deklarere alle dine egne variable (vha. "my"); vær iøvrigt
opmærksom på praktiske finesser som f.eks. at variable deklarerede i
eksempelvis en for/foreach er lokale for løkken og dens statement:
for( my $i = 0 ; $i < 256 ; ++$i )
for my $i ( 0 .. 255 ) # Hurtigere, og lettere at forstå


Brug så vidt muligt "die" i stedet for "exit" (se hvad der står om
"exit" i perlfunc-maualen).


Sørg for at præ-deklarere subs, dvs. placer en sub (eller i det
mindste en prototype for den) før/over det sted den bruges første
gang.


Definer dine subs med prototype:
sub a() {}
sub b($$) {}
og kald dem med argument-paranteser (dvs. kald ikke vha. "&" medmindre
det er nødvendigt):
a()
b($arg1,$arg2)
Bemærk iøvrigt at en $variabel som argument til en sub effektivt set
overføres som en reference til variablen - den overgivne variabel kan
således ændres inde fra sub'ben. Anvendelse af denne praktiske finesse
bør dog altid dokumenteres klart i starten af sub'en.


Fejl i din kode:

> $subject = "$IND{$_};

Hovsa, dét anførselstegn skal vist ikke være der...

> unless (cc eq '') {
> unless (bcc eq '') {

Der mangler "$" foran de to variabelnavne.

> foreach $key (keys(%andet) {

Der mangler afsluttende parentes.

Det er iøvrigt normalt at udelade argument-parentesen ved f.eks. keys
- det gælder for alle de builtins som kun (og altid) tager præcist
ingen eller ét argument (keys, values, each, scalar, wantarray,
o.s.v.). Men det er selvfølgelig et spørgsmål om kodningsstil, præcis
som din (efter min mening) lidt mærkværdige brug af indryk,
tuborgklammer, og dummy-else{;}


/Peder Skyt

tlh (07-03-2003)
Kommentar
Fra : tlh


Dato : 07-03-03 14:08

Jeg sidder også og leger med et andet script, jeg har kørt den på en
komandolinje, og jeg får denne fejl omkring 15 gange, på forskellige
variabler,, hvad vil det sige?
Global symbol "$indhold" requires explicit package name at gbog.pl line 45.



Peder Skyt, Z=nospam (07-03-2003)
Kommentar
Fra : Peder Skyt, Z=nospam


Dato : 07-03-03 23:41

On Fri, 7 Mar 2003 14:08:20 +0100, "tlh" <tlh@softhome.net> wrote:

>fejl omkring 15 gange, på forskellige variabler,, hvad vil det sige?
>Global symbol "$indhold" requires explicit package name at gbog.pl line 45.

Perl kan (på pågældende sted i programmet) ikke "se" variablens
deklaration, og tror derfor at du prøver at bruge en global variabel.

Meddelelsen skyldes ofte en fejl *tidligere* i programmet end angivet
- almindeligvis at en tidligere {}-blok eller tekststreng ikke er
syntaksmæssigt påbegyndt eller afsluttet korrekt.

Du véd selvfølgelig hvilken linie din variabel-deklaration findes:
my $indhold
og meddelelsen angiver velsagtens et senere linienummer.
Fejlen ligger så efter al sandsynlighed et sted mellem de to linier.

/Peder Skyt

tlh (16-03-2003)
Kommentar
Fra : tlh


Dato : 16-03-03 10:26

1000 tak for hjælpen, jeg tror jeg vil låne en bog om perl, da jeg har
fundet ud af hvor dårlig min perl er



Henrik Tougaard (27-02-2003)
Kommentar
Fra : Henrik Tougaard


Dato : 27-02-03 08:25

On Wednesday 26 February 2003 15:36 it appears that tlh wrote:

> Jeg er ny begynder, i perl, men er sprunget ud i et forsøg på at lave en
> formmailer. Det meste er 'cut-and-pasted' fra WCmail.pl, fra
> http://webcafe.dk, hvor jeg i øvrigt også har lært det perl jek kan.

Istedet for at følge webcafe's eksempler (der efter min mening ikke er
særlig gode) burde du
- se på NMS formmail (se http://nms-cgi.sourceforge.net/scripts.shtml) -
den er veldokumenteret, veldesignet, sikker og enkel.
- købe/låne en eller flere bøger om Perl. O'Reilly's bøger anses normalt
for at være de bedste, og 'Learning Perl, 3rd ed' af Randall Schwartz et
al. er en glimrende indføring i perl
- læse perlmonks sitet (der er *mange* gode forklaringer på simple ting) på
http://www.perlmonks.org.
- evt gå til et perlmongers møde i København eller Århus - indbydelser
kommer af og til her.

mvh
Henrik

Lars Balker Rasmusse~ (27-02-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 27-02-03 16:00

Henrik Tougaard <htoug@hotmail.com> writes:
> - evt gå til et perlmongers møde i [...] Århus - indbydelser
> kommer af og til her.

Kun hvis han ka' li' øl.
--
Lars Balker Rasmussen                  "S.M.R.T."

Thorbjoern Ravn Ande~ (27-02-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 27-02-03 20:52

Lars Balker Rasmussen <lars@balker.org> writes:

> > - evt gå til et perlmongers møde i [...] Århus - indbydelser
> > kommer af og til her.
>
> Kun hvis han ka' li' øl.

Kan man ikke det, er det ok hvis man giver øl til andre.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Erwin Lansing (27-02-2003)
Kommentar
Fra : Erwin Lansing


Dato : 27-02-03 22:25

In article <0fu1ep7oqd.fsf@laphroaig.balker.org>, Lars Balker Rasmussen wrote:
> Henrik Tougaard <htoug@hotmail.com> writes:
>> - evt gå til et perlmongers møde i [...] Århus - indbydelser
>> kommer af og til her.
>
> Kun hvis han ka' li' øl.

i kombi med ko


--
Erwin Lansing       --     abe.fnidder.dk   

Dennis Haney (03-03-2003)
Kommentar
Fra : Dennis Haney


Dato : 03-03-03 14:36

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thorbjoern Ravn Andersen <nospam0000@unixsnedkeren.dk> writes:

> Lars Balker Rasmussen <lars@balker.org> writes:
>
>> > - evt gå til et perlmongers møde i [...] Århus - indbydelser
>> > kommer af og til her.
>>
>> Kun hvis han ka' li' øl.
>
> Kan man ikke det, er det ok hvis man giver øl til andre.

Det er saa heller ikke et krav :D

- --
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/>

iD8DBQE+Y1pbo6hqeoa8JFgRAvOqAKCz0EKMQzbu13eKaLdPDxTVgMbb7gCfZOhR
QLONtozfJCdpREuQwKnEw0M=
=Bo9m
-----END PGP SIGNATURE-----

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

Månedens bedste
Årets bedste
Sidste års bedste