Vad är skillnad mellan
My $namn ="nordan";
och
$namn = "nordan";
/nordan
[Redigerat av nordan den 07 mar 2001]
5 svar · 260 visningar · startad av nordan
Vad är skillnad mellan
My $namn ="nordan";
och
$namn = "nordan";
/nordan
[Redigerat av nordan den 07 mar 2001]
Förenklat kan man säga att my() gör att enbart det block (samt eventuella underblock) till det nuvarande vet om att variabeln finns. Ex:
sub funktion {
my $foo = 1;
if($foo == 1) {
my $bar = 2;
}
# Här är $foo = 1, men $bar finns inte.
}
/Csson
------------------
Erimax.com
Cykelsemester
[Redigerat av Csson den 07 mar 2001]
Hej!
Vad jag förstår av perl så skulle man kunna skriva så här oxå och få samma effect eller?
sub funktion {
$foo = 1;
if($foo == 1) {
$bar = 2;
}
}
Jag hajjar inte riktigt tror jag
/
nordan
Tittar du på $foo utan för funktionen (eller $bar utanför if-sasten) så ser du skillnaden. I ditt fall finns variablerna kvar, men inte i Cssons exempel.
Har du ett stort och komplext script kan det vara smart att "avgränsa" variablerna på detta vis så att de inte krockar med varandra.
------------------
/ J
hmm Känner mig lite trög nu men jag fattar iaf inte riktigt ju :r
/
nordan
Gör du mindre skript så kan du köra som du brukar nordan. Det anses naturligtvis bättre att deklarera sina variabler om man nu ska göra det riktigt, men brukar själv inte vara så noga med det.
Anledningen är att du i stora skript (särskilt om du använder "require" kanske börjar glömma bort vilka namn du haft tidigare och då döper variabler med samma namn.
Rent logiskt så blir det ju snabbt en konflikt någonstans.
Mest problem får man nog om man kör mod_perl eftersom variablerna ligger kvar efter att skriptet körts klart. Det innebär att nästa skript som körs får värden från ett tidigare skript om det innehåller samma variabler och därmed ett oväntat resultat.
[red.]
Det var inte menat att uppmana till slarvigt skrivna skript :)
Man bör såklart alltid deklarera sina variabler och att programmera med flaggan -w (eller rent av use strict; gör naturligtvis att man lär sig perl på rätt sätt och samtidigt får ett bra fungerande skript.
Det var mest avsett så du förstod skillnaden :)
[Redigerat av FlashX den 08 mar 2001]