Leser: 19
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
#!/usr/bin/perl
use strict;
use warnings;
use Net::FTPSSL;
my @ret;
my %dirlist;
my $i = 0;
my $win_ftp = "192.168.0.3";
my $homeftp = Net::FTPSSL->new ("$win_ftp",
Port => 6500,
Encryption => CLR_CRYPT,
Croak => 1,
);
$homeftp->login('test','test');
@ret = $homeftp->nlst('','');
for (@ret) {
%dirlist = (
"$i" => "$_",
);
print $dirlist{$i};
$i++;
}
print $dirlist{$i};
print $dirlist{"5"}
$dirlist{$i} = "mein wert";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use strict;
use warnings;
use Net::FTPSSL;
my %dirlist = ();
my $win_ftp = "192.168.0.3";
my $homeftp = Net::FTPSSL->new ("$win_ftp",
Port => 6500,
Encryption => CLR_CRYPT,
Croak => 1,
);
$homeftp->login('test','test');
my @ret = $homeftp->nlst('','');
my $i = 0;
for my $val (@ret) {
$dirlist{$i} = $val;
print $dirlist{$i};
$i++;
}
1
2
3
# bei deinem code ist das hier das Selbe:
print $dirlist{$i}; # Hash-Zugriff, geschweifte Klammern
print $red[$i]; # Array-Zugriff, eckige Klammern
2009-12-20T22:58:30 pktm[...][...]Code (perl): (dl )1 2 3 4 5 6 7 8my %dirlist = (); [...] my $i = 0; for my $val (@ret) { $dirlist{$i} = $val; print $dirlist{$i}; $i++; }
my %dirlist = map { $_ => $ret[$_] } $[..$#ret;
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
use strict; use warnings; use Data::Dumper; my %hash = ( a => 1, ); print Dumper \%hash; $hash{b} = 2; print Dumper \%hash; %hash = ( c => 3, ); print Dumper \%hash; # ausgabe __END__ $VAR1 = { 'a' => 1 }; $VAR1 = { 'a' => 1, 'b' => 2 }; $VAR1 = { 'c' => 3 };
2009-12-21T18:15:22 pqes wurde doch schon gesagt, dass du mit einer zuweisung an %dirlist den gesamten hash neu definierst und somit alle einträge löschst.
vielleicht solltest du dich genau auf aussagen beziehen, damit wir wissen, was genau du nicht verstanden hast, denn pauschal nochmal dieselbe frage zu stellen, hilft da auch nicht.
desweiteren wurde dir gezeigt, wie du stattdessen neue keys hinzufügst.