Schrift
[thread]11425[/thread]

wie testen ob leeres Array definiert wurde? (Seite 3)

Leser: 4


<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten
Linuxer
 2008-03-08 23:12
#106839 #106839
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
betterworld+2008-03-08 17:06:55--
Linuxer+2008-03-08 16:45:45--
Auf Basis der Ueberlegung, seinen Editor umzukonfigurieren, so dass er @ durch @$ ersetzt, koennte man ihn ja auch umkonfigurieren, dass er Umlaute durch deren Umschreibung ersetzt ;o))

SCNR (war schon irgendwo schmerzhaft, den Text ohne Umlaute zu lesen)


Meinst Du jetzt mich?

Ich finde es immerhin nicht so schmerzhaft, wie einen Text mit Umlauten in komischen Kodierungen zu lesen ;)

Ja, ging in Deine Richtung. Aber ich sehe, so hat jeder sein Wehwehchen ;o))
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
KurtZ
 2008-03-08 23:53
#106840 #106840
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Linuxer+2008-03-08 22:12:11--
Ja, ging in Deine Richtung. Aber ich sehe, so hat jeder sein Wehwehchen ;o))


aha .. lass raten du bist Puritaner mit Ami-Tastatur, damit das Y leichter erreichbar ist, schreibts dafür jedesmal oe statt ö!

Pörl rules! 8-)
TMTOWTDYOG (there's more than one way to dig your own grave)
Linuxer
 2008-03-09 01:11
#106843 #106843
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
KurtZ+2008-03-08 22:53:01--
aha .. lass raten du bist Puritaner mit Ami-Tastatur, damit das Y leichter erreichbar ist, schreibts dafür jedesmal oe statt ö!

Pörl rules! 8-)

Nö, bin kein Puritaner und nutze auch das klassische deutsche Tastaturlayout.
Aus beruflicher Notwendigkeit versuche ich die deutschen Umlaute zu meiden.
Mal gelingt es mir mehr, mal weniger ....
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Struppi
 2008-03-09 15:37
#106850 #106850
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Also, auch ich kann dieses Problemn nicht nachvollziehen.
Du kannst natürlich mit if(defined $array[0]) testen ob es ein definiertes Element gibt, aber ansonsten reicht eigentlich immer if(@array) oder unless(@array)
KurtZ
 2008-03-09 15:48
#106852 #106852
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Mit if(@arr) fragst du nur ab ob das array "nicht leer" ist, "leer aber definiert" bekomst du nicht hin. Schau dir meinen Beispielcode an bzw. das BCC-Beispielanwendung.

Diese Unterscheidung gibts bei Skalaren und IMHO bei mehreren anderen Sprachen auch.

if (defined @arr[0]) ist eine komplett andere Geschichte.


NACHTRAG:
Beispielcode in JS
Code: (dl )
javascript:a=[];if (a) {alert("definiert")};

einfach in die Adresszeile pasten und return.
ja ich weiß in JS sind Arrays Objekte und ich frage im Grunde die Referenz ab...
TMTOWTDYOG (there's more than one way to dig your own grave)
Struppi
 2008-03-10 13:18
#106882 #106882
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Mir ist schon klar, worauf du hinaus willst, nur welches Problem siehst du darin oder welchen Nutzen aus der Information ob ein Array leer oder undefiniert ist?

KurtZ+2008-03-09 14:48:09--
if (defined @arr[0]) ist eine komplett andere Geschichte.
Hab ich auch nicht geschrieben, es muss heißen if (defined $arr[0]) und damit kannst du festellen, ob es ein definiertes Element gibt, das ist meiner Meinung die einzige Information die noch relevant wäre.
Gast Gast
 2008-03-10 14:19
#106885 #106885
@KurtZ

Geht es dir jetzt um ein Praxisproblem oder willst du uns nur sagen, dass beim Interpreter-/Compilerbau von Perl da etwas sytaktisch geschlampt wurde ;)

Ich verstehe nämlich auch nicht mehr, um was es dir geht.
KurtZ
 2008-03-10 15:14
#106888 #106888
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-03-10 13:19:52--
Geht es dir jetzt um ein Praxisproblem oder willst du uns nur sagen, dass beim Interpreter-/Compilerbau von Perl da etwas sytaktisch geschlampt wurde ;)


kein Praxisproblem, das kann man mit Refs abfackeln, und so wie Perl
gestrickt ist kommst du sowieso an expliziten Refs nicht vorbei.
(Allerdings geht dann bei Refs IMHO ein Teil der Typprüfung in der Compilerphase flöten.)

Ich hab gleich im OP gesagt das das ne theoretische Diskussion ist.

Gast+2008-03-10 13:19:52--
Ich verstehe nämlich auch nicht mehr, um was es dir geht.


Ich habe mir von der Diskussion einen Erkenntnisgewinn erhofft wieso defined @arr
deprecated ist. Sinnloser Bruch der Orthogonalität ärgert mich ...

Ich habe mir schon überlegt wie man die Sache retten könnte, in dem man das defined
Builtin überlädt und im Functions-Scope die Warnings auschaltet.

Es wäre aber IMHO sinnvoller gleich einen Codingstil zu haben, der die Arbeit mit Referenzen priorisiert und Listen zur Ausnahmen macht.
TMTOWTDYOG (there's more than one way to dig your own grave)
Struppi
 2008-03-10 16:00
#106890 #106890
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Es kommt in der Praxis ganz einfach nicht vor, das man defined @array abfragt.
KurtZ
 2008-03-10 17:11
#106892 #106892
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-03-08 06:30:37--
Das kann schon interessant sein.
Beispiel:
...


dein Beispiel kann man folgendermaßen retten:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  use strict;
#use Data::Dumper;

my @liste;

sub lade_liste {
  my $pfad=shift;
  my $liste_ar=shift;
  if(open (my $fh, '<', $pfad)) {
    @$liste_ar= ('dummy' );  # damit Speicher allokiert wird!
    @$liste_ar=<$fh>;
    close($fh);
  } 
  return (@$liste_ar);
}

lade_liste('Test.txt' => \@liste);


{no warnings;                # "defined is deprecated" ausschalten
    if(defined(@liste)) {
        if( @liste ) {       #  if (scalar @liste) ist redundant
            print @liste;
        }
        else { warn "Datei war leer, kann nicht weiter machen!" }
    }
    else { warn "Datei konnte nicht geladen werden ($!)" }
}


pq's Einwand bzgl Fehlermeldung stimmt zwar, aber es gibt genug denkbare Beispiele wo ein leeres aber definiertes Array sinnvoll wäre ohne das eine Fehlermeldung geworfen werden müsste.
TMTOWTDYOG (there's more than one way to dig your own grave)
<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten



View all threads created 2008-03-06 23:58.