B::Lint Merkwürdiger Fehler und Frage

Hallo,

ich teste meine Programme gerne mit B::Lint:

perl -MO=Lint,all <script>.pl

Funktioniert prima, nur eines fällt mir auf:

In Code wie

sub hallo {
my $argument = shift;
...
}

erhalte ich die Meldung

Implicit scalar context for array in shift at test.pl line 2

(wobei Zeile 2 die mit der Zuweisung ist).

Normalerweise sollte laut Beschreibung diese Meldung
erscheinen, wenn ein Array in einem skalaren Kontext
verwendet wird, z.B.

my $length = [at] array;

was ja, wenn man ganz genau ist, als

my $length = scalar [at] array;

geschrieben werden müsste.

Aber in meinem Code kommt ja nur ein "shift" vor, und
das erwartet als Argument ja ein Array. Daher verstehe
ich den Sinn dieser Meldung nicht und wollte nur fragen,
ob das vielleicht jemand anderem auch schon aufgefallen
ist.

PS: Schreibt man

sub hallo {
my $argument = shift [at] _;
...
}

d.h., schreibt man das " [at] _" explizit dazu, dann bleibt
Lint ruhig. Wie man mit B::Deparse erkennen kann, ist
genau das der Code, den der Parser generiert. Aber ist es
wirklich genau der Code? Wieso bleibt Lint hier stumm
und im anderen Fall nicht?

Zweite Frage: ich möchte gerne eine Erweiterung zu Lint
schreiben, der man eine Liste von Namen übergibt und
die dann darauf hinweist, wenn solche Namen als Variable-
oder Funktionsnamen verwendet werden. Hat das schon
mal jemand gemacht?

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol [at] adv.magwien.gv.at
Ferry Bolhar [ Fr, 21 September 2007 08:18 ] [ ID #1826541 ]
Perl » de.comp.lang.perl.misc » B::Lint Merkwürdiger Fehler und Frage

Vorheriges Thema: Umgebungsvariable setzen
Nächstes Thema: regexp for bracket expressions