Skalar in einem eingebundenen Skrit ändern
TomC
- perl
0 Markus Möller0 Struppi0 TomC
Hat jemand eine Idee, warum folgendes Vorhaben scheitert?
Ich habe ein Hauptskript:
##########################
#!C:/Programme/Apache Group/Apache2/Perl/bin/perl.exe -w
###!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $skalar = "Anfangswert";
require "skalaraendern.pl";
[...]
print $skalar;
[...]
###########################
Und das eigebundene Skript skalaraendern.pl:
##########################
$skalar = "Neuer Wert";
1;
##########################
Das Hauptskript liefert als Wert für $skalar immer "Anfangswert".
Was mache ich falsch?
Gruß von TomC
Hallo!
Vielleicht mal "my $skalar" in "local $skalar" ändern?
Hat jemand eine Idee, warum folgendes Vorhaben scheitert?
Ich habe ein Hauptskript:
##########################
#!C:/Programme/Apache Group/Apache2/Perl/bin/perl.exe -w
###!/usr/bin/perl -wuse strict;
use CGI::Carp qw(fatalsToBrowser);my $skalar = "Anfangswert";
our $skalar = "Anfangswert";
Struppi.
our $skalar = "Anfangswert";
Struppi.
Danke, funktioniert wunderbar!
Aber warum?
Gruß von TomC
Hi
our $skalar = "Anfangswert";
Struppi.
Danke, funktioniert wunderbar!
Aber warum?
Weil 'our' eine globale Variable einleitet, my eine, die nur in der aktuellen Datei, Namensbereich usw. (was vom Prinzip das gleiche ist)funktioniert. Siehe 'perldoc -f our', 'perldoc -f my'.
Ausserdem, kannst du dieses Skalaraendern.pl nicht in eine sub schreiben? Etwa so:
sub skalaraendern
{
my $skalar = "foo bar test";
return $skalar;
}
Diese Subroutine wird in so aufgerufen:
my $skalar = skalaraendern();
mfg Andres Freund