Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 10:24.
@Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Hallo
so - nun hat mich CB mit den Referenzen verrückt gemacht ;-)
Ich möchte gern an eine Sub drei Werte übergeben, wobei der einen eine Liste ist und die anderen zwei nur Scalare.
Wie kriegt man das denn möglicherweise hin?
Hier mal die Sub (die baut eine Tabelle dynamisch je nach Elementzahl die in der Liste stehen und je nachdem, wie die Zahl für den einen übergebenen Wert ist und, wenn ein Trennflag übergeben wird, noch mit farbigen Trennungen zwischen die einzelnen Tabellenzellen mit Inhalt):
---schnipp
sub dynatable{
# @tz_inhalt soll als Liste übergeben werden
# $teiler soll als scalar übergeben werden
# $flag soll als scalar übergeben werden
my @l_tzinhalt; my $teiler; my flag; # alles übergebene Werte
my $tz; # lexikalisch um Quereffekte zu vermeiden
while(@l_tzinhalt){
$tz.= "<tr>"; # neue Tab-Zeile
my $trenntd = "<td width=1 bgcolor=$fd><img src=$pix width=1></td>" if $flag eq "trennung";
for ($z=1; $z<=$teiler; $z++){ # soviele Tab-Zellen wie durch \$teiler vorgegeben
$trenntd = "" if ($z == $teiler); # keine Trennzeile wenn Letzte Tab-Zelle in Zeile
$tz.= shift @l_tzihnalt;
$trenntd = $#l_tzihnalt > -1 ? $trenntd : ""; # noch Tab-Zelle aus Liste für die akt.Tab-Zeile? - dann Trennzeile dazu
$tz.= $trenntd;
}
$tz.= "</tr>"; # Tabellenzeilenende
}
my $tab_dyna = "<table align=center border=1 cellspacing=0 cellpadding=0>$tz</table>";
return $tab_dyna;
}
--- schnapp
Kann mir da bitte mal jemand "unter die Arme greifen", da ich diesen Codeblock gelegentlich einsetze, würde ich den gern als Sub anlegen und nicht jedesmal ins Template schreiben....
Danke
Ruben
Antworten
Beitrag von Claus Christmeier (598 Beiträge) am Mittwoch, 30.Juli.2003, 10:47.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 12:31.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
auch wieder über referenzen ;-)
@arr=("bla","blubb");
$teiler=1;
$flag=0;
&blubb(\@arr,$teiler,$flag);
sub blubb{
my @l_tzinhalt=@{shift @_}; # liste rausholen
my ($teiler,$flag)=@_; # skalare rausholen
out "@l_tzinhalt";
}
aber CB findet sicher noch was feineres ;-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 13:13.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
jepp - Sander das wars.
Ich Kam... hab probiert wie ein doofer, die Syntax hatte ich ähnlich gemacht, aber in der Schleife dann aus ner nicht vorhandenen Liste (falscher Name, nicht angepasst) versucht Werte zu shiften, da hat er sich jedesmal dran totgelaufen.....
Danke - Referenzen begonnen zu verstehen... ;-)
Auf CBs feineres bin ich mal gespannt *sfg*
Ruben
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 30.Juli.2003, 13:25.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 15:12.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
gut provoziert oder? ;-)))) Das "aber..." fehlte mir schon lange ;-)
Kannst du mir mal kurz erklären, wie das dann mit den Listenwerten funzt - wenn ich die Liste als Referenz übergebe und Referenz weiterverarbeite, wird aber trotzdem die Ursprungsliste in der Sub manipuliert? - auch wenn man bspw. die Gültigkeit der Liste im aufrufenden Scriptblock lexikalisch gesetzt hat?
Und mit der "zeit- und ressourcenverschwendenen" Syntax wird die Liste aus der Ursprungsliste mittels der Referenz bei der Dereferenzierung in die neue Liste kopiert? - hab ich das so in Ansätzen richtig verstanden?
Das gleiche müsste dann ja auch für Scalar- und Hashreferenzen gelten (mhm - hashs werden ja aber als Liste referenziert - puhh, das is schon nich ganz ohne....)
Danke für Tipp
Ruben
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 30.Juli.2003, 15:41.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 15:54.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
jo - auf jeden fall, du schreibst ja in der speicheradresse rum ;-)
sonst halt doch vorher kopieren :-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 16:24.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
jetzt scheint der Groschen gefallen zu sein - hab nochmal das Perl-Kochbuch hergenommen und versucht, die Sache zu verstehen.
Ne Referenz ist ja genau das was es heißt - ein Bezug auf ein egal was (Scalar, Liste, Hash) - und wie du schon sagts, Sander, ein Bezug auf einen "Wert" in einer Speicheradresse.
Da ist dann halt "nur" drauf aufzupassen, was man denn nun wirklich manipuliert haben will, den "Ursprung" der Referenz oder tatsächlich ne Kopie...
Danke - es hat mir sehr geholfen.
Ruben
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 16:49.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
so - ich wollte es doch nochmal wissen, wie es denn mit den "jungen Leuten der Konsumgsellschaft" wirklich steht *gg*
Hab zwei Subs gebaut, eine mit direkter Referenzbearbeitung, eine mit umkopieren der Referenz in neue Liste.
Die Unterschiede sind nicht sehr Signifikant (bei 100.000 Schleifendurchläufen) -[Sander möge mir Verzeihen - das Script läuft reichlich 5 Sekunden bei 2x 100.000 fors - hoffe euer Server verkraftet das - geb deshalb auch keinen Link...]
Hier das Ergebnis:
Schleife 1 mit Referenz und 100000 Durchläufen: 2.45 Sekunden
Schleife 2 mit Referenz umkopieren und 100000 Durchläufen: 2.75 Sekunden
So, nun hätten wir das auch geklärt :-))
Ruben
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 17:01.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
fein...
und der watchdog hat sich nicht gemeldet ;-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 17:14.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Der kleine Bello scheint bei Euch eh recht großzügig eingestellt zu sein - ist mir heut bei meinen Experimenten aufgefallen) - hoffe, es gab keine Probleme mit anderen Usern?
Antworten
Beitrag von Raphael (267 Beiträge) am Mittwoch, 30.Juli.2003, 17:28. WWW: www.coderarena.de
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
sag mal ruben, in letzter zeit ist nextfloor ab und zu einfach nicht erreichbar... bist du da dran schuld!? ;-)
cu, raphael
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 17:35.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
ups - da krieg ich ja gleich ein schlechtes Gewissen - ich hab heut grad mal seit Mittag etwa mit paar verqueren Dingen hantiert (na solange der Thread halt läuft) - und vorhin paarmal den Laufzeittest gemacht.
Aber du wirst lachen, gelegentlich ist es tatsächlich mal paar Sekunden bis Minuten weg (auch wenn ich nichts verrücktes mache)
Wenn ich heut dran schuld war, dass der Server geschnauft hat sorry an alle, bin wieder "normal" am Arbeiten.
(Sander schau doch mal nach, was die log-Dateien sagen, kann das wirklich so wild sein.... heute?)
Ruben
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 17:41.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
also frank arbeitet heute schon den ganzen tag auf nextfloor - der server war immer da und erreichbar. Wenn du ne msg bekommst, das die seite nicht angezeigt werden kann, liegt es sicher am ressourcenbedarf deines scriptes (speicher voll oder zeit abgelaufen). und wie schon gesagt, in den logs kann ich nichts erkennen.
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 18:00.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
gut, dann bin ich beruhigt - Raphael hatte mich ganz wuschig gemacht....
Und weisst ja - nichts ist unmöglich (noch dazu wenn hempel was ausprobiert *fg*)
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 17:37.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Antworten
Beitrag von Raphael (267 Beiträge) am Mittwoch, 30.Juli.2003, 18:00. WWW: www.coderarena.de
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
du ungläubiger! ;-) aber das ist nicht meine idee, ein freund von mir, ebenfalls bei nextfloor kunde, klagt auch immer wieder, dass nextfloor minutenweise einfach nicht erreichbar ist. sieht man 5 minuten später wieder rein -> geht wieder alles...
cu, raphael
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 18:04.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
denkste nicht, dass "immer wieder" übertrieben ist?
Bin seit vorige woche rund um die Uhr am Tag vielleicht 12 Stunden drin - es gab mal nen paar-Minuten-Hänger am Sonntag abend und am Montag früh warns Sekunden - zumindest bei mir
Und vorhin, als ich bischen "gespielt" hatte, ging trotz "Langlaufscript" noch ein anderes in ner normalen Zeit (so um die 0,3 Sekunden)
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 23:09.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
ahh, in der nacht gegen 2-3 uhr läuft das backup der kundendaten... vor allem Sonntag ist das schon heftig, was da an daten bewegt wird.
Antworten
Beitrag von Raphael (267 Beiträge) am Donnerstag, 31.Juli.2003, 14:56. WWW: www.coderarena.de
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
ich überwache den server ja nicht rund um die uhr und 7 tage die woche, aber es kommt doch eben "immer wieder" vor. soll keine anschuldigung an irgendjemanden sein, wollte ich halt nur mal erwähnen ;)
cu, raphael
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 30.Juli.2003, 17:35.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
wie meinst du?
kann nix feststellen...
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 30.Juli.2003, 19:50.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
"nicht sehr signifikant" - das sind 12% Beschleunigung!! ;-) Aber ich sags ja: Die jungen Leute heute......
Ausserdem: Wieviel Elemente hatte die Liste um die's ging denn?
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 30.Juli.2003, 20:25.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
du willsts halt wieder genau wissen ;-) (und gerechnet haste auch noch... stimmt aber, 12% sieht schon gut aus)
Also - traus mich ja garnich zu sagen, war ne klitzekleine Liste mit 3 Tabellenzellen, jede so um die 500 Zeichen lang.
Werds aber nich nochmal mit ner 20KB grossen Liste testen, irgendeiner der Provider hupft mir sonst mit dem nackten A.. ins Gesicht.... *gg*
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 30.Juli.2003, 22:59.
Re: @Perler - Liste und Scalare an Sub übergeben? [Sander-Abenteuer!]
Wieso, mach das doch hier bei baseportal.de ;-)
Und nimm mal mhh, 100 Elemente oder mehr...
Antworten