Struppi: zeile aus textfile entfernen oder ausschneiden

Beitrag lesen

my $items = $FORM{'Video(s)'};#wird vom formular geschickt

Du arbeitest immer noch nicht mit CGI.pm?

ja das ist mitlerweile ein problem,ich möchte das jetzt doch mit
CGI.pm machen,weil es mitlerweile so nicht ganz geht wie es jetzt ist,jedenfalls nicht mit dem alten browser netscape 4.x mit den anderen gehts NS7,IE5...

Ein CGI Skript hat nichts mit dem Browser zu tun, du hast bvermutlich ein anderes Problem.

eine frage dazu ist,wenn ich in einer sub welches gleichzeitig ein teil einer html ausgabe ist,den eintrag
<input type='hidden' name='$rcitem-desc' value='$itemname'> sowie einen link href='$cgiurl?command=delitem&$rcitem-desc=$itemname' habe,das dann an das selbige script geschickt wird,aber dann eben die sub delitem(wie unten beschrieben) aufruft,wie kann ich das dann mit CGI.pm einbinden?Ich müsste doch auf den name='$rcitem-desc' dort (sub delete_item) zugreifen oder?

Das verstehe ich nicht.

Mit dem Modul kannst du acuh einfach die HTML ausgabe erzeugen:

CGI::hidden(-name => 'rcitem-desc', -value => $itemname);

gleichzeitig werden die Felder auch automatisch ausgefüllt, d.h. hier muss i.d.R. noch nicht mal '.value' stehen.

Und auf die Werte greifst du mit:
CGI::param('rcitem-desc');

zu.

Schau dir die Doku zu dem Modul mal an, was es alles kann.

if($FORM{$rcitem-desc} eq $itemname) oder so...
Soll ich z.B.
my $rcitem-desc = $FORM{'rcitem-desc'}||'';
ganz am anfang vom script deklarieren oder erst in der sub?

my deklariert eine Variabel lokal, du solltest sie dort deklarieren, wo du sie brauchst, wenn du sie im ganzen Programm an vielen Stellen brauchst kannst du sie auch im Aussnahmefall global deklarieren. Aber globale Variabel sind nicht besonders geschickt, da sie auch global verändert werden könnten und dann weiß man nie welchen Wert sie haben.

Es gibt aber auch z.b. die Möglichkeit mit packages ein Modul zu konstruieren in dem ein Variabel gültig ist. aber ich befürchte das überfordert dich.

Das script wird zur zeit so deklariert bzw. geparst

Parse form input

my %FORM = parse_form();

Get command variables

my $command = $FORM{'command'}||'';

parse form input

sub parse_form {
my %FORM;
my $query = new CGI;
my @names = $query->param;
foreach (@names){
$FORM{$_} = $query->param($_);
}
return %FORM;
}

Mit CGI.pm sieht das so aus:

my $command = CGI::param('command') ||'';

mehr brauchst du nicht. Ich verstehe nicht warum du glaubst hier ein HASH zu erzeugen müssen. du kannst jederzeit im Modul auf die Werte zugreifen, wie schon gesagt am sinnvollsten dort wo sie gebraucht werden.

my($itemname, $itemprice, $itemquant) = split(/|/,$_);

Was ist den $_ hier an dieser stelle?
sollten die daten sein die in der textfile stehen.

ist es aber nicht.

ja aber $itemname ist definiert

Hat aber einen undefnierten Wert (je nachdem was in $_ steht, das weißt du aber hier nicht)

Struppi.