Article View: pl.comp.lang.perl
Article #861Re: use sctrict i deklaracja my - rozwiązanie problemu
From: Waldek Grudzien
Date: Fri, 09 Jan 1998 07:22
Date: Fri, 09 Jan 1998 07:22
63 lines
3380 bytes
3380 bytes
On Thu, 8 Jan 1998, Michał Mosiewicz wrote:
> Waldek Grudzien wrote:
>
> > No dobrze, ale może ja nie chcę, żeby zmienne (powiedzmy robocze), które
> > wykorzystuję (deklaruję) w "części głównej programu" były widoczne w
> > funkcjach (chyba, że jawnie zadeklaruję je jako globalne używając
> > 'use vars qw(#tu lista moich zmiennych globalnych#)' )
> > Uff - chyba naświetliłem już wystarczająco ;-) ?
>
> Hmm, ja bym powiedział, że to jest lekko nienaturalne. Zazwyczaj
> większość języków programowania posługuje się pojęciem zasięgu
> zmiennych. I chyba nie istnieje język który pozwala usuwać widoczność
> zmiennych przy zagnieżdżaniu. (OK, nie mówmy o prywatnych elementach
> obiektów)
No nie, bez przesady - za chwilę dowiem się, że przykładowo w języku C
zmienne zadeklarowane w main {} są widoczne w innych funkcjach ...
(C nie jest też jedynym językiem, który ma taką własność)
Zauważ, że w moim pytaniu nigdzie nie upierałem się przy zagnieżdżaniem.
> Wydaje mi się, że nie jest to potrzebna 'feature'. Wręcz przeciwnie, ja
...
> Natomiast, jeśli obawiasz się, że jakaś funkcja używa zmiennych
> globalnych i może to powodować błędy w działaniu programu, to w trakcie
> testów możesz je przykryć zagnieżdżonymi definicjami.
I twoim zdaniem mam przejrzeć setki linii kodu aby poprzykrywać wszystkie
zmienne globalne ? - dzięki ...
_____________________________________________________________________________
ROZWIĄZANIE :
Nasunęło mi się z przypominania jak to się robi w C (main {}) :
_____________________________________________________________________________
use strict;
package main; {
my $c ="ccccc";
&test;
}
sub test {
print ":$c:";
}
_____________________________________________________________________________
Działa dokładnie tak jak chciałem : wypluwa komunikat błędu (o
niezadeklarowaniu $c).
Jeśli, chcę aby $c była globalna, po prostu deklaruję ją "powyżej main"
i po kłopocie ...
Pozdrawiam,
Waldek Grudzień
///////////////////////////////////////////
// http://www.uhc.lublin.pl/~waldekg/ //
// Lublin/Lubartów, Poland //
\\ University Health Care \\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Technical Details
Message-ID:
<Pine.HPP.3.96.980109074808.8390A-100000@clinicom.uhc.lublin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!lublin.pl!clinicom.uhc.lublin.pl!waldekgReferences:
<Pine.HPP.3.96.980106080208.22789B-100000@clinicom.uhc.lublin.pl> <68t9l8$odv$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980106145512.25699A-100000@clinicom.uhc.lublin.pl> <68tejj$8f2$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980107101037.29387A-100000@clinicom.uhc.lublin.pl> <6907db$dkd$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980108073610.3985B-100000@clinicom.uhc.lublin.pl> <34B4DF4C.1ADEFC@lodz.pdi.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!lublin.pl!clinicom.uhc.lublin.pl!waldekg From: Waldek Grudzien <waldekg@uhc.lublin.pl> Newsgroups: pl.comp.lang.perl Subject: Re: use sctrict i deklaracja my - rozwiązanie problemu Date: Fri, 9 Jan 1998 08:22:07 +0100 Lines: 79 Message-ID: <Pine.HPP.3.96.980109074808.8390A-100000@clinicom.uhc.lublin.pl> References: <Pine.HPP.3.96.980106080208.22789B-100000@clinicom.uhc.lublin.pl> <68t9l8$odv$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980106145512.25699A-100000@clinicom.uhc.lublin.pl> <68tejj$8f2$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980107101037.29387A-100000@clinicom.uhc.lublin.pl> <6907db$dkd$1@galaxy.uci.agh.edu.pl> <Pine.HPP.3.96.980108073610.3985B-100000@clinicom.uhc.lublin.pl> <34B4DF4C.1ADEFC@lodz.pdi.net> NNTP-Posting-Host: clinicom.uhc.lublin.pl Mime-Version: 1.0 In-Reply-To: <34B4DF4C.1ADEFC@lodz.pdi.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit