"We are back" « oc.at

Perl -> dynamic variable buidling?

Murph 10.01.2002 - 16:51 1598 19
Posts

Murph

Nerd
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
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.

Wenn ich die Sub zB mit...
Code:
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
Registered: n/a
Location:
Posts: n/a
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
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
ja, du hast was falsch verstanden :D

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

Murph

Nerd
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
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;

tjo, in $test befindet sich genau garnix...
hoff es sind alle klarheiten beseitigt

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
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 :D

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
Registered: n/a
Location:
Posts: n/a
obst jetzt schreibst (****** auf die dollar, ich tu grad VB coden :D)

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
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
$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! :D :D :D :D :D :D

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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! :D :D :D :D :D :D

mit funktion, die einliest und chompt - begreif es endlich! :mad: :)

VB - ich habs mir net ausgesucht, aber die firma zahlt gut für das projekt ;) :cool:

Murph

Nerd
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
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
Registered: n/a
Location:
Posts: n/a
Zitat von Murph][cs.at
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?? :eek:

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 :rolleyes: )

Murph

Nerd
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
ähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei :D

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
@rettich: zeig mir wie du in Cobol sauber programmierst und kriegst a auszeichnung :D

@murph: durch leutz wie dich hat perl so an schlechten ruf :eek: :rolleyes: :D

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> );
}

HTH :D

Murph

Nerd
Avatar
Registered: Dec 2001
Location: Vienna
Posts: 9236
Glaub ma, perl hat nicht nur durch mich an schlechten ruf :D


auf die idee mit den 2 $ wär ich nicht kommen

naja
just my 2 cents :p :D

thxalot!

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von Murph][cs.at
ähm... funktion und subroutine is in Perl dasselbe, aber das nur nebenbei :D

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? :confused:

:D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz