URL: https://www.overclockers.at/coding-stuff/perl_gt_dynamic_variable_buidling_22522/page_1 - zur Vollversion wechseln!
eine frage an die Perl coder... oder vielleicht auch c++ (eins is eh fast das andere =) )
Es geht um eine ganz simple Subroutine...
soll das machen:
Code:sub subroutine_name($) { chomp ($tempvar = <stdin>); [b]mach_variable_mit_namen_$[/b]; } ich hoff ihr verstehts was gemeint is.
Code:readin_var(test);
warum machst nicht eine function, die als rückgabewert das eingelesene zeichen hat? muddu halt dann
name_der_variable = zeichen_eingabe()
aufrufen. oder hab ich da was falsch verstanden? (weil das wär ja irgendwie sinnlos)
ja, du hast was falsch verstanden
schau, das was ich machen will ist eine Subfunktion für etwas was ma ca. 300x im Monat macht
readin vom keyboard
-> in Variable spucken
-> Variable chompen (newline wegtun)
und ich will mir den Namen der Variable, die rauskommt, aussuchen können - vergiß das $ bei Var's net...
ich will also daß jetzt wenn die sub "keyb_read" heißt, wenn ich
keyb_read(firststring);
mach, ein Keyboard readin stattfindet,
die Variable gechompt wird
und eine Variable mit namen $firststring
gemacht wird.
erster ansatz sah so aus...
Code:sub string_read($) { chomp ($tempvar=<stdin>); @_ = $tempvar; } # end sub string_read
DARN! ich kann net aus der Hakn bevor ich den "$(& net fertig hab
Code:#!usr/bin/perl sub string_read($) { chomp ($tempvar=<stdin>); @_ = $tempvar; $_ = $tempvar; } # end sub string_read system("cls"); print "Type in word(s) to search for.\n> "; &string_read(test); print $test;
warum ist das so wichtig, dass die variable dynamisch angelegt wird? mach DOCH eine funktion, die einliest und chompt und dir den fertigen wert zurückgibt.
sonst kriegst imo IMMER probleme mit dem variablen-scope (weil wo steht die funktion und wo brauchst die variable -> dort musst du sie definieren)
das kommt mir irgendwie so vor, wie mit der kuh um den kirchturm fliegen, oder wie auch immer diese metapher heißen möge
kA wie's heißt, hab jedenfalls null ahnung wast meinst =)
Der grund warum ich das ding auf befehl haben will, ist, weil ich in manchen Progs halt manchmal 8, 9 Variablen per Keyb einlesen will
und wär ein bissi tepat wenn sie alle denselben namen haben
Es wär einfach genial gmatlich wenn ich sagen könnt
readin(var1);
readin(var2);
readin(var3);
next if (readin eq '');
das is um einges besser als
readin;
$var1=$tempvar;
readin;
$var2=$tempvar;
readin;
$var3=$tempvar;
ich schreib grad an nem Mehrfach Search/Replace tool, und da gibts bis zu acht querys =)
obst jetzt schreibst (****** auf die dollar, ich tu grad VB coden )
readin(var1)
readin(var2)
usw
kannst genausogut
var1 = readin()
var2 = readin()
schreiben, mit readin() = funktion, die einliest und chompt.
das wäre sauber, alles andere ist pfusch. punkt.
$bla1=chomp($tempvar=<stdin>
$bla2=chomp($tempvar=<stdin>
$bla3=chomp($tempvar=<stdin>
so auf die art - suckt (zuviel zum tippen)
btw:
VB coder und spricht von "so wäre es sauber"?
WAHAHAHAHHAAHHA DARN U OWN!
Zitat von Murph][cs.at$bla1=chomp($tempvar=<stdin>
$bla2=chomp($tempvar=<stdin>
$bla3=chomp($tempvar=<stdin>
so auf die art - suckt (zuviel zum tippen)
btw:
VB coder und spricht von "so wäre es sauber"?
WAHAHAHAHHAAHHA DARN U OWN!![]()
![]()
![]()
![]()
![]()
aso, hab dacht du machst das Freiwillig =)
Funktion die einlesen und chompen würde und Variable in gewünschtem Name zurückliefert wär einfach nur noch w00t, aber scheint (noch) ein ding der unmöglichkeit zu sein...
Zitat von Murph][cs.ataso, hab dacht du machst das Freiwillig =)
Funktion die einlesen und chompen würde und Variable in gewünschtem Name zurückliefert wär einfach nur noch w00t, aber scheint (noch) ein ding der unmöglichkeit zu sein...
ähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei
@rettich: zeig mir wie du in Cobol sauber programmierst und kriegst a auszeichnung
@murph: durch leutz wie dich hat perl so an schlechten ruf
Aber ok:
du machst einfach ein $$varname -> dann wird die Variable accessed dessen name in $varname steht -> ist IMHO unsauber aber funktioniert.
also in deinem Fall:
Code:#!/usr/bin/perl readin_var("lame"); readin_var("lame2"); print "$lame $lame2"; sub readin_var { $varname = @_[0]; chomp ( $$varname = <stdin> ); }
Glaub ma, perl hat nicht nur durch mich an schlechten ruf
auf die idee mit den 2 $ wär ich nicht kommen
naja
just my 2 cents
thxalot!
Zitat von Murph][cs.atähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025