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

push auf Referenz auf anonymes Array



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Froschpopo
 2005-04-17 18:57
#53860 #53860
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
hab nen anonymen Array:

Code: (dl )
1
2
3
my %hash = (
'users' => ['user1', 'user2', 'user3']
);

jetzt hab ich drei Fragen:

1. Wie kann ich einen user dem anonymen array hinzufügen?
2. wie lösche ich einen index aus dem array?
3. wie kann ich auf die indexes zugreifen bzw einen lesen?
renee
 2005-04-17 19:23
#53861 #53861
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
push(@{$hash{users}},'user4');


Element mit Index 2 löschen:
Code: (dl )
splice(@{hash{users}},2,1);


Element mit index 2 ausgeben:
Code: (dl )
print ${$hash{users}}[2],"\n";
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/
Froschpopo
 2005-04-17 19:28
#53862 #53862
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
wenn ich jetzt user2 löschen will, wie bekomme ich dessen index heraus?\n\n

<!--EDIT|Froschpopo|1113752889-->
Ronnie
 2005-04-17 19:58
#53863 #53863
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my %hash = (
'users' => ['user1', 'user2', 'user3']
);

my $users = $hash{'users'};
print Dumper $users;
print "Index highest user: ", $#{$users}, "\n";

for (0..$#{$users}) {
print "Index searched user: ", $_, "\n" if $users->[$_] eq 'user2';
}

Splicen darfst du aber erst nach verlassen des Loops, weil sonst die Länge nicht mehr stimmt.
Relais
 2005-04-18 11:12
#53864 #53864
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Froschpopo,17.04.2005, 17:28]wenn ich jetzt user2 löschen will, wie bekomme ich dessen index heraus?[/quote]
Das brauchst Du nicht einmal:
Code: (dl )
@{ $hash{users}} = grep { ! /^users2$/ } @{ $hash{users} };
\n\n

<!--EDIT|Relais|1113812222-->
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
renee
 2005-04-18 11:50
#53865 #53865
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich finde den Vergleich mit ne besser, wenn man bestimmte Einträge rausfiltern will...

Code: (dl )
@{hash{users}} = grep {$_ ne 'user2'} @{hash{users}};
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/
pKai
 2005-04-18 12:05
#53866 #53866
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Um die Array-Kopie zu vermeiden könnten man auch so vorgehen:
Code: (dl )
splice(@{$hash{users}}, map {++$i && $_ eq 'user2' ? ($i-1) : ()} @{$hash{users}},1)

Na ja, 'nen Schönheitspreis gewinnt das nicht ;)
I sense a soul in search of answers.
pq
 2005-04-18 12:40
#53867 #53867
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Ronnie,17.04.2005, 17:58]
Code: (dl )
1
2
3
4
...
for (0..$#{$users}) {
   print "Index searched user: ", $_, "\n" if $users->[$_] eq 'user2';
}

Splicen darfst du aber erst nach verlassen des Loops, weil sonst die Länge nicht mehr stimmt.[/quote]
man kann auch einfach for (reverse 0..$#$users) { machen, dann
kann man splicen, wie man lustig ist.\n\n

<!--EDIT|pq|1113813662-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Ronnie
 2005-04-18 12:47
#53868 #53868
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=pq,18.04.2005, 10:40]man kann auch einfach for (reverse 0..$#$users) { machen, dann kann man splicen, wie man lustig ist.[/quote]
Okay, das ist natürlich wahr und die beste Methode. Das offensichtliche fällt einem zuletzt oder gar nicht ein. *rotanlauf*
Froschpopo
 2005-04-18 14:26
#53869 #53869
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich würde gerne alle Elemente von ${$hash{users}} in einer foreach abarbeiten. Wie kann ich alle Indexes anzeigen ?
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-04-17 18:57.