string zusammen bauen
roman lenz
- perl
0 Siechfred0 roman lenz0 Siechfred0 roman lenz0 Klaus Mock
0 Klaus Mock
hi hi
ich habe 2 array und möchte daraus einen string machen. zwischen den strings soll ein leerzeichen sein und nach dem zweiten sting noche ich einen zeilenumbruch einfügen (\n)
$achse = @xachse;
@yachse;
for ($i = 0; $i < $xachse; $i++) {
push(@wert,$xachse[$i],'',$yachse[$i],'\n');
}
$wert = join('',@wert);
leider bekomme ich den zeilenumbruch nicht hin :-( ??
kann ich das push und das join zusammen fassen?
besten dank roman
Prost!
ich habe 2 array und möchte daraus einen string machen. zwischen den strings soll ein leerzeichen sein und nach dem zweiten sting noche ich einen zeilenumbruch einfügen (\n)
$achse = @xachse;
@yachse;
for ($i = 0; $i < $xachse; $i++) {
^ soll das hier vielleicht $achse heißen?
push(@wert,$xachse[$i],'',$yachse[$i],'\n');
Besser wäre push(@wert,'$xachse[$i] $yachse[$i]\n');
$wert = join('',@wert);
Wofür brauchst du das join()?
mfg Torsten
push(@wert,$xachse[$i],'',$yachse[$i],'\n');
Besser wäre push(@wert,'$xachse[$i] $yachse[$i]\n');
klappt leider nicht :-((
$wert = join('',@wert);
Wofür brauchst du das join()?
ich möchte die werte in einer textarea wieder ausgeben
mfg Torsten
Guten Morgen,
Besser wäre push(@wert,'$xachse[$i] $yachse[$i]\n');
klappt leider nicht :-((
Versuch es mal unter Beachtung des Hinweises von Klaus, also mit " statt '.
mfg Torsten
Guten Morgen,
Besser wäre push(@wert,'$xachse[$i] $yachse[$i]\n');
klappt leider nicht :-((Versuch es mal unter Beachtung des Hinweises von Klaus, also mit " statt '.
mfg Torsten
hi hi
jeep jetzt klappt es :-)
for ($i = 0; $i < $xachse; $i++) {
$wert.="$xachse[$i] $yachse[$i]\n";
}
leider bekomme ich noch folgende Ausgabe:
0 0
1 1
2 2
3 6
4 7
8 8
was ich will ist aber folgendes
0 0
1 1
2 2
3 6
4 7
8 8
könnt ihr mir dabei auch noch helfen
besten dank roman
Hallo,
leider bekomme ich noch folgende Ausgabe:
0 0
1 1
was ich will ist aber folgendes
0 0
1 1
könnt ihr mir dabei auch noch helfen
Dazu müßte man wissen, wie die Daten in den Array @xachse bzw @yachse generiert werden. Ich vermute, daß es durch einlesen aus einer Datei passiert, wobei die EInleseroutine nicht berücksichtigt, daß auch das \n aus der Datei eingelesen wird. ein chomp an der richtigen Stelle wirkt da oft Wunder;-)
Grüße
Klaus
Hallo Klaus
erstmal danke das du mir hilfst
hier ist mal ein schnipsel aus meinem script.
...
elsif (param('yachse')&¶m('xachse')) {
$file = $cgi->param("yachse");
read ($file,$yachse,5000000);
chomp $yachse;
@yachse = split(/\s/,$yachse);
$yachse = @yachse;
$file = $cgi->param("xachse");
read ($file,$xachse,5000000);
chomp $xachse;
@xachse = split(/\s/,$xachse);
$xachse = @xachse;
if($yachse != $xachse) {$meld = "Unterschiedliche Anzahl von X- und Y-Werten", &kill($meld)};
for ($i = 0; $i < $xachse; $i++) {
$wert.="$xachse[$i] $yachse[$i]\n";
}
}
...
die Ausgabe mache ich so:
...
<div align="center">Eingabe der Wertepaare<br>
<textarea name="puls" rows="11" cols="40">
HTML
print $wert;
print <<HTML;
</textarea>
</div>
...
ich sitze hier und verzweifele ein bisschen
besten dank roman
P.s. hast du einen guten link zum Thema "doublequotet und einfache quotet"
Hallo,
elsif (param('yachse')&¶m('xachse')) {
$file = $cgi->param("yachse");
read ($file,$yachse,5000000);
chomp $yachse;
@yachse = split(/\s/,$yachse);
$yachse = @yachse;
....
}
Das ist etwas unüblich, kann aber, entsprechende Umstände vorausgesetzt, funktionieren.
Es sieht, entsprechend Deinem Vorposting, so aus, als ob da irgendwie doch Zeilenumbrüche in die Datei gekommen sind, die dann in der Ausgabe wieder aufscheinen. Überprüfe einmal, was in den Arrays wirklich drin steht.
Das geht recht gut mit einem Begrenzungszeichen:
for ($i = 0; $i < $xachse; $i++) {
$wert.="Eintrag $i: #$xachse[$i]# #$yachse[$i]#\n";
Wenn es Einträge ohne Werte gibt, dann passt Dein split() nicht. (Was ich jetzt für am wahrscheinlichsten halte)
Beispiel:
Eintrag 1: #1# #1#
Eintrag 2: ## ##
Eintrag 3: #2# #4#
....
Wenn es eine Zeilenumbruch zwischen dem Wert und dem nachfolgenden # gibt, dann ist was bei dem Inhalt für die yachse faul.
Beispiel:
Eintrag 1: #1# #1
Eintrag 2: #2# #4
P.s. hast du einen guten link zum Thema "doublequotet und einfache quotet"
http://selfhtml.teamone.de/cgiperl/sprache/zeichenketten.htm#regeln z.B.
Aber auch in der Perldokumentation selbst gibt's natürlich näheres:
Günstigerweise per Commandline mit 'perldoc perlop'.
Im Notfall auch per http://www.perldoc.com/perl5.8.0/pod/perlop.html#Quote-and-Quote-like-Operators.
Grüße
Klaus
Hallo,
@yachse;
was ist das denn?
for ($i = 0; $i < $xachse; $i++) {
$xachse ist in Deinem Code nicht definiert, aber auch nicht nötig wenn Du stattdessen
for ($i = 0; $i < scalar @xachse; $i++) {
verwendest.
push(@wert,$xachse[$i],'',$yachse[$i],'\n');
leider bekomme ich den zeilenumbruch nicht hin :-( ??
Dir ist der Unterschied zwischen interpolierten (doublequotet) und nicht-interpolierten (singlequotet) Strings bekannt? Im speziellen solltest Du einmal ausprobieren welche Ausgabe durch
print '\n';
bzw.
print "\n";
erzeugt wird.
kann ich das push und das join zusammen fassen?
Du könntest beispielsweise alles gleich in eine einfache Variable schreiben, ganz ohne Zwischenarray. Ein Tipp: .= kann oft wirklich tolle Dienste leisten.
Eine direkte Ausgabe ist natürlich auch möglich, dann brauchst Du überhaupt keine zusätzliche Variable, was natürlich extrem ressourcenschonend wäre.
Grüße
Klaus