Schrift
[thread]5796[/thread]

arrayelemente sortieren (Seite 2)

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Strat
 2003-10-04 02:39
#60532 #60532
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=jan10001,04.10.2003, 00:26]Ups, hab es vergessen zu posten.
Danke [E|B] !

Noch ne Frage zu den Arrays, wenn ich das so schreibe:
Code: (dl )
1
2
3
4
5
6
7
8
&test($string1,$string2);

sub test {
my $string1 = $_[0];
my $string2 = $_[1];
my $string3 = $_[3];

}


Gibt das einen Fehler, immerhin habe ich ja nur 2 Skalare übergeben oder ist dann $string3 nur undefiniert?[/quote]
da ist $_[3] einfach undefiniert.

@E|B: entweder du schreibst
Code: (dl )
1
2
3
4
5
@array = qw(5347562834 2347625683 2345683476);
# oder
@array = (5347562834, 2347625683, 2345683476);
# denn
@array = qw(5347562834, 2347625683, 2345683476);

gibt eine nette Warnung und ueberdies auch nicht die elemente, die du haben willst...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
jan10001
 2003-10-04 02:51
#60533 #60533
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
da ist $_[3] einfach undefiniert.

Also wenn ich das dann $string3 zuweise und den String dann mit
Code: (dl )
1
2
3
if ($string3 eq "") {
...
}
prüfe müßte er das ohne Fehlermeldung machen, richtig?
Strat
 2003-10-04 03:11
#60534 #60534
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=jan10001,04.10.2003, 00:51] ...richtig?[/quote]
fehlermeldung kommt da keine, wohl aber eine Warnung. $_[0] hat den Wert undef, und das ist was anderes als eine leere Zeichenkette. Wenn du undef wie eine Zeichenkette verwendest, wird es nach "" umgewandelt, aber eben mit dieser Warnung.
Besser abfragen, ob es definiert ist:
Code: (dl )
1
2
3
4
5
6
if (defined $string3) {
 print "$string3 ist definiert\n";
 if ($string3 eq '') {
   print "$string3 ist die leere Zeichenkette\n";
 }
}

Haeufig wird auch sowas gemacht:
Code: (dl )
$string3 ||= "";

Wenn $string3 nicht definiert ist, 0 ist oder die leere Zeichenkette enthaelt, wird es auf die leere Zeichenkette gesetzt und ist somit definiert. Ob das mit der 0 ein Problem ist oder nicht, muss man halt von Fall zu Fall unterscheiden...\n\n

<!--EDIT|Strat|1065222718-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
jan10001
 2003-10-05 01:27
#60535 #60535
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Hm, würde das gehen?

Code: (dl )
1
2
3
if (undef $_[3]) {
print "ist leider leer\n";
}
DS
 2003-10-05 02:09
#60536 #60536
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,04.10.2003, 23:27]Hm, würde das gehen?

Code: (dl )
1
2
3
if (undef $_[3]) {
  print "ist leider leer\n";
}
[/quote]
Damit wird das vierte Element auf undef gesetzt... undef gibt selber immer undef zurück, auch als Funktion, d.h. das Ganze ist nie wahr...
jan10001
 2003-10-05 02:25
#60537 #60537
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Verstehe. Gibt es dann sowas wie ne Negation für defined? Ich möchte das in ner Fehlerprüfung verwenden. Also wenn $_[3] nicht definiert ist, soll er meine Bedingung ausführen. (Das wäre in dem Fall die Beendigung des Programms.)
Strat
 2003-10-05 02:46
#60538 #60538
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=jan10001,05.10.2003, 00:25]Verstehe. Gibt es dann sowas wie ne Negation für defined?[/quote]
Code: (dl )
1
2
3
if ( ! defined ($array[3])) {
# nicht definiert
}

oder besser:
Code: (dl )
1
2
3
unless (defined ($array[3])) {
# nicht definiert
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
jan10001
 2003-10-05 03:05
#60539 #60539
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Auf unless hätte ich eigentlich selber kommen können. :)

Danke für die Hilfe!
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2003-10-03 23:41.