Leser: 13
|< 1 2 3 >| | 22 Einträge, 3 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $i = 0;
my $suchtext = "finde_mich";
# Schleife über das array bis entweder array-ende oder
# $suchtext gefunden
while ($i < scalar(@array) && $array[$i] ne $suchtext)
{ $++ }
# ist der $suchtext gefunden ???
# wenn ja, dann wird das array "gespliced"
if ($array[$i] eq $suchtext)
{ splice(@array, $i, 1) }
else
{ print "sorry - suchtext [$suchtext] ist nicht enthalten\n" }
1
2
3
4
my $suchtext = "finde_mich";
for my $i ( reverse 0 .. $#array ) {
splice(@array, $i, 1) if ($array[$i] eq $suchtext);
}
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @items = qw(foo bar buz baz red green yellow blue);
@items = grep {$_ ne 'red'} @items;
print Dumper \@items;
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl
use strict;
use warnings;
use List::Util qw//;
=pod
=head1 FRAGE VON KERSTIN
Is es in Perl möglich, in einem dynamischen Array ein bestimmtes element zu löschen?
Die Stelle an der das Element ist, steht nicht fest.
=cut
my @array = List::Util::shuffle ('Zitrone', 'Apfel', 'Birne', 'Kiwi', 'Pflaume', 'Banane');
# Durch shuffle weiß ich nicht, an welcher Stelle Kiwi ist...
print "Vorher:\n";
print "'$_'\n" for @array;
#
# Möglichkeit 1 mit Grep und zwei Arrays:
#
print "Entferne 'Kiwi' ...\n";
my @ohnekiwi = grep {$_ ne 'Kiwi'} @array;
print "Nachher 1:\n";
print "'$_'\n" for @ohnekiwi;
#
# Möglichkeit 2 mit splice:
#
my $kiwiindex = -1;
for (0..$#array) { $kiwiindex = $_ if $array[$_] eq 'Kiwi' }
if ($kiwiindex >= 0) {
splice @array, $kiwiindex, 1;
}
else {
print "'Kiwi' nicht im Array gefunden\n";
}
print "Nachher 1:\n";
print "'$_'\n" for @array;
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
G:\privat\perl\forum>array_minus_element.pl
Vorher:
'Pflaume'
'Apfel'
'Birne'
'Zitrone'
'Banane'
'Kiwi'
Entferne 'Kiwi' ...
Nachher 1:
'Pflaume'
'Apfel'
'Birne'
'Zitrone'
'Banane'
Nachher 1:
'Pflaume'
'Apfel'
'Birne'
'Zitrone'
'Banane'
G:\privat\perl\forum>array_minus_element.pl
Vorher:
'Banane'
'Zitrone'
'Pflaume'
'Birne'
'Apfel'
'Kiwi'
Entferne 'Kiwi' ...
Nachher 1:
'Banane'
'Zitrone'
'Pflaume'
'Birne'
'Apfel'
Nachher 1:
'Banane'
'Zitrone'
'Pflaume'
'Birne'
'Apfel'
G:\privat\perl\forum>
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl
use strict;
use warnings;
use List::Util qw//;
=pod
=head1 FRAGE VON KERSTIN
Is es in Perl möglich, in einem dynamischen Array ein bestimmtes element zu löschen?
Die Stelle an der das Element ist, steht nicht fest.
=cut
my @array = List::Util::shuffle ('Zitrone', 'Apfel', 'Birne', 'Kiwi', 'Pflaume', 'Banane', 'Kiwi', 'Kiwi');
# Durch shuffle weiß ich nicht, an welcher Stelle Kiwi ist...
print "Vorher:\n";
print "'$_'\n" for @array;
print "Entferne 'Kiwi' ...\n";
#
# Möglichkeit 1 mit Grep und zwei Arrays:
#
my @ohnekiwi = grep {$_ ne 'Kiwi'} @array;
print "Nachher 1:\n";
print "'$_'\n" for @ohnekiwi;
#
# Möglichkeit 2 mit splice:
#
my @kiwiindex;
for (0..$#array) { push @kiwiindex, $_ if $array[$_] eq 'Kiwi' }
if (@kiwiindex) {
splice @array, $_, 1 for reverse @kiwiindex;
}
else {
print "'Kiwi' nicht im Array gefunden\n";
}
print "Nachher 2:\n";
print "'$_'\n" for @array;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Vorher:
'Apfel'
'Kiwi'
'Kiwi'
'Zitrone'
'Kiwi'
'Pflaume'
'Birne'
'Banane'
Entferne 'Kiwi' ...
Nachher 1:
'Apfel'
'Zitrone'
'Pflaume'
'Birne'
'Banane'
Nachher 1:
'Apfel'
'Zitrone'
'Pflaume'
'Birne'
'Banane'
|< 1 2 3 >| | 22 Einträge, 3 Seiten |