Schrift
[thread]6617[/thread]

Zuweisung einer Stringvariable: Wieder so ein Newbieproblem...



<< >> 10 Einträge, 1 Seite
Alex
 2005-01-09 16:53
#50646 #50646
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Hi,

warum geht das nicht?:
Code: (dl )
1
2
3
4
5
6
7
8
9
$stringeinfuegen = 'Hier ist der Inhalt der Stringvariablen eingefügt worden!';

sub Subeinfuegen {
$returnstring = 'Hier wurde der Rückgabewert der Subroutine eingefügt';
return $returnstring;
}

$string = qq($stringeinfuegen und Subeinfeugen());
print $string;


Den $einfügen macht er so wie gewollt, aber anstelle mir den Rückgabewert der sub zu zeigen bekomme ich nur deren Aufruf: Subeinfeugen().

Ja, normalerweise natürlich mit use strict; usw.

Was mache ich denn nun schon wieder falsch? Also ich meine vermutlich würde es gehen mit $string = $stringeinfügen.' und '.Subeinfügen(); Ich würde halt gerne wissen warum er mit dem qq()-Operator die Varable interpretiert, die Subroutine aber nicht?\n\n

<!--EDIT|Alex|1105282559-->
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2005-01-09 16:58
#50647 #50647
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
weil funktionen eben nicht interpoliert werden
pq
 2005-01-09 16:58
#50648 #50648
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich glaube nicht, dass du strict benutzt, sonst hättest du in der sub
my $returnstring geschrieben.
das hat aber nichts mit deinem problem zu tun. sub-aufrufe werden in ""
nicht interpoliert. das wäre auch etwas zuviel arbeit für perl.
du musst es zuerst einer variablen zuweisen und dann die variable
interpolieren. oder so:
$string = qq($stringeinfuegen und ${\Subeinfeugen()});
denn alles mit @{[...]} oder ${\...} wird interpoliert.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Alex
 2005-01-09 17:15
#50649 #50649
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
[quote=pq,09.01.2005, 15:58]$string = qq($stringeinfuegen und ${\Subeinfeugen()});
denn alles mit @{[...]} oder ${\...} wird interpoliert.[/quote]
Vielen Dank, das geht sehr gut. Sind bloß wieder ein paar Worte aus meinem Sprache/Wortmodul holen - da mache ich mir mal keine Sorgen, dass Perl zu viel arbeiten muss.
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
pq
 2005-01-09 17:57
#50650 #50650
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Alex,09.01.2005, 16:15]da mache ich mir mal keine    Sorgen, dass Perl zu viel arbeiten muss.[/quote]
nein, so meinte ich das auch nicht. perl hat hier nicht mehr arbeit.
wenn man die möglichkeit einbauen würde, sub-aufrufe zu interpolieren,
wäre das mehr parsing für perl plus die schwierigkeit, zu entscheiden,
was man schreibt, wenn man tatsächlich den string 'funktion()' oder so haben
wollte.
das mit ${\...} ist ein trick; bei komplizierteren sachen würd ich das
aber nicht mehr machen, sondern ein template-system verwenden.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Alex
 2005-01-09 18:39
#50651 #50651
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Passt schon. Benutze ja HTML::Template. Nur in diesem Fall hat es damit gar nix zu tun. Das da oben war nur ein vereinfachtes Model um meine Frage zu beschreiben. Danke.
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
lichtkind
 2005-01-09 19:24
#50652 #50652
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ginge statt ${\Subeinfeugen()} auch ${&Subeinfeugen()} ?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
jemand
 2005-01-09 20:38
#50653 #50653
User since
2004-05-14
231 Artikel
BenutzerIn
[default_avatar]
was ist wenn man (Subeifuegen()) macht?
print uc 'i',chr(29*4).q+'s +.++($_=q-m-),++$_;
print chr for 116,$_[0],97,$_[0],98;
print 'ug,',chr(), scalar reverse qq?!erutaef a s'ti?;
lichtkind
 2005-01-09 20:44
#50654 #50654
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ah habs shcon rausgefungen es müsste dann immer noch ${\&Subeinfeugen()} heissen
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
format_c
 2005-01-09 21:18
#50655 #50655
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ist aber ganz schön häßlich. Da bitte ich glaube ich weniger wenn ich den String abschließen undmit dem Punkt-Operator verbinde

Gruß Alex
<< >> 10 Einträge, 1 Seite



View all threads created 2005-01-09 16:53.