Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12478[/thread]

Frage doppelte einträge löschen in array löschen

Leser: 1


<< >> 8 Einträge, 1 Seite
Gast Gast
 2008-09-11 15:26
#114533 #114533
Hallo
habe ein kleines sub geschrieben,welches eine array und einen string erhält und überprüft ob der string schon im array vorhanden ist. leider funktioniert das nicht.
ich finde den fehler einfach nicht :(

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 .

sub doppelte
{
@array=shift;
$liste=shift;
$laenge=shift;

$sperre=5;
foreach $i (0..$laenge)
{

$t=@array[$i];
if ($t eq $liste)
{
$sperre=1;
print "sperre1 \n";
return $sperre;
}
}
return $sperre;
}


MFg

Kronecker
Gast Gast
 2008-09-11 15:56
#114535 #114535
benutze doch mal
use strict;
use warning;

und erkundige dich vielleicht mal wie man auf arrayelemente richtig zugreift.

Grüße
LanX
renee
 2008-09-11 16:01
#114536 #114536
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2008-09-11 13:26:33--
leider funktioniert das nicht.
ich finde den fehler einfach nicht :(


Das heißt?

Was ist das gewünschte und was das wirkliche Ergebnis? Mit welchen Daten?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bytebrain
 2008-09-11 16:14
#114537 #114537
User since
2008-07-21
20 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
$t=@array[$i];


Das geht so nicht... Müsste $t = $array[$i] sein...


bytebrain
LanX-
 2008-09-11 16:26
#114538 #114538
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
bytebrain+2008-09-11 14:14:03--
Das geht so nicht... Müsste $t = $array[$i] sein...


ja und soweit ich diesen Code ohne Einrückungen und Highlighting lesen kann macht er nichts anderes als das grep -Kommando!
Gast Gast
 2008-09-11 16:44
#114539 #114539
Code (perl): (dl )
@array=shift;

das geht so nicht!
Code (perl): (dl )
my @array=@_;
LanX-
 2008-09-11 16:58
#114540 #114540
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
ja du hast es lokalisiert, aber dann geht der restliche Code [*] nicht und OP müsste sich mit Array-Referenzen auseinandersetzen. lieber perldoc -f grep anschauen! [*] NACHTRAG: es sei denn er übergibt das Array als letzten Parameter, aber byValue statt byRefrence ist das doch echt Murks.
Gast Gast
 2008-09-12 00:07
#114555 #114555
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sub doppelte
{
  @array=shift;
  $liste=shift;
  $laenge=shift;

  $sperre=5;
  foreach $i (0..$laenge)
  {

    $t=@array[$i];
    if ($t eq $liste)
    {
      $sperre=1;
      print "sperre1 \n";
      return $sperre;
    }
  }
  return $sperre;
}

gute güte...
entweder:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
sub doppelte
{
  my $liste=shift;
  my $laenge=shift;
  my @array=@_;

  for my $val (@array[0..$laenge]) {
    return 1 if ($val eq $liste);
  }
  return 5;
}

oder
Code (perl): (dl )
1
2
3
4
5
6
sub doppelte
{
  my $liste=shift;
  my $laenge=shift;
  return (grep{$_ eq $liste}(@_[0..$laenge]))?1:5;
}
<< >> 8 Einträge, 1 Seite



View all threads created 2008-09-11 15:26.