Perl -> dynamic variable buidling?
Murph 10.01.2002 - 16:51 1598 19
Murph
Nerd
|
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: sub subroutine_name($)
{
chomp ($tempvar = <stdin>);
[b]mach_variable_mit_namen_$[/b];
}
ich hoff ihr verstehts was gemeint is.
Wenn ich die Sub zB mit... readin_var(test);
aufrufe, will ich eine Variable den namen $test hat, und vorher per STDIN (keyboard) eingelesen wird, und dann gechompt wird. hat _irgendwer_ einen Lösungsansatz dafür? Oder fehlt mir nur der geistesblitz? thx@all
|
Guest
Deleted User
|
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)
|
Murph
Nerd
|
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... sub string_read($) {
chomp ($tempvar=<stdin>);
@_ = $tempvar;
} # end sub string_read
|
Murph
Nerd
|
DARN! ich kann net aus der Hakn bevor ich den "$(& net fertig hab #!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;
tjo, in $test befindet sich genau garnix... hoff es sind alle klarheiten beseitigt
|
Guest
Deleted User
|
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
|
Murph
Nerd
|
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 =)
|
Guest
Deleted User
|
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.
|
Murph
Nerd
|
$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!
|
Guest
Deleted User
|
|
Murph
Nerd
|
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...
|
Guest
Deleted User
|
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... was hindert dich? deine skills??  sollte net soooo ein problem sein. einfach das "sub" gegen ein "function" austauschen und einen wert "returnen" (autsch, ich bin völlig am VB trip, hauts mich bitte mal wer *zu_funka_rüberschau*) edit: btw: die verwendete sprache hat überhaupt NIX mit sauber oder unsauber zu tun - das ist allein eine stil-frage. (ich kann zB schlampig c# coden, dafür sauber VB  )
|
Murph
Nerd
|
ähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei
|
Guest
Deleted User
|
@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: #!/usr/bin/perl
readin_var("lame");
readin_var("lame2");
print "$lame $lame2";
sub readin_var
{
$varname = @_[0];
chomp ( $$varname = <stdin> );
}
HTH
|
Murph
Nerd
|
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!
|
Guest
Deleted User
|
ähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei  kenn ich mich aus mit perl? nein? könnt ein grund sein  allgemein gefragt: wie unterscheidet man in perl semantisch eine unterroutine, die einen wert zurückgibt, bzw eine, die keinen wert zurückgibt!? @.deRElict. cobol? war das nicht das indizierte spiel am amiga?
|