Leser: 1
![]() |
|< 1 2 3 4 >| | ![]() |
34 Einträge, 4 Seiten |
Froschpopo+2008-05-10 20:16:36--Nun will ich später eventuell außerhalb der while nochmal Elemente hinzufügen:
Code: (dl )$param{SPORTART}->[$#$param{SPORTART}+1]->{DATUM} = 3;
1 2 3 4 5
#... my $foo = { a => [1,2,3,4,5] }; push @{$foo->{a}}, 6,7,8,9; print @{$foo->{a}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
sub rpush { push @{+shift},@_; } sub lst ($) { @{$_[0]} } sub rscalar ($) { scalar @{$_[0]}; } my $foo = { a => [1,2,3,4,5] }; rpush $foo->{a} , 6,7,8,9; print lst $foo->{a}, " restprint ..."; print rscalar $foo->{a};
KurtZ+2008-05-11 23:39:43--Mal so ne Idee, wenn man's oft schreiben muss könnte man sich mit Wrappern behelfen, die dürften kaum Performance kosten
KurtZ+2008-05-11 23:39:43--Vielleicht gibts ja sowas ähnliches schon bei CPAN...
Quote>2500 Postings
1 2 3 4 5
sub HRef { wantarray ? keys %{$_[0]} : %{$_[0]} }; my $href = { qw(a 1 b 2) }; foreach( HRef $href){ print "$_\n"; }
DanielH+2008-05-12 18:00:04--Stimmt, über so etwas hab ich noch gar nicht nachgedacht. Für mich würde im Prinzip "sub ARef { @{$_[0]} }" und "sub HRef { %{$_[0]} }" bereits ausreichen. Leider kann man allerdings HRef nicht mit 'keys' und 'values' benutzen (was ich oft verwende).
DanielH+2008-05-12 18:00:04--Ein source Filter sollte noch eine andere Möglichkeit sein. Da sollte es auch performance-technisch die geringste Verluste geben (wenn das Script länger als 0,2 Sekunden läuft). Allerdings habe ich noch nie was mit source Filtern gemacht, und kenne nicht die Nachteile, die so etwas mitbringt (abgesehen von den offensichtlichen).
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
package HashRef; sub new { my $class=shift; my $ref=shift || {}; $ref=ref($ref) eq 'HASH'? $ref : {}; my $self={ref=>$ref); $self->{cnt}=0; bless($self,$class); return $self; } sub unref { my $self=shift; $self->{cnt}=0; return(%{$self->{ref}}); } sub ref { my $self=shift; $self->{cnt}=0; if(@_ && ref($[0]) eq 'HASH') { $ref{ref} } else { return $self->{ref} } } sub keys { my $self=shift; $self->{cnt}=0; return(keys(%{$self->{ref}})); } sub each { my $self=shift; my @l=%{$self->{ref}}; @l=splice(@l,$self->{ref},2); $self->{ref}+=2; return @l; } sub get { my $self=shift; my $key=shift; return $sef->{ref]->{$key}; } sub set { my $self=shift; my $key=shift; my $value=shift; $sef->{ref]->{$key}=$value; } sub exists { my $self=shift; my $key=shift; return exists($sef->{ref]->{$key}); } sub type { return 'HASH'; } 1;
renee+2008-05-14 11:50:45--Warum kein 'Tie' dafür nehmen?
$foo{bar}{baz}->push(42);
![]() |
|< 1 2 3 4 >| | ![]() |
34 Einträge, 4 Seiten |