Leser: 7
2025-07-05T21:10:44 lichtkindDanke.Artikel kommt auch noch.
QuoteEntwicklerinnen und Entwickler, die unter Perl 5.42 ihre Programme mit use experimental 'class'; beginnen, dürfen field-Variablen mit der Eigenschaft :writer(...) kennzeichnen und somit den Namen einer autogenerierten setter-Methode festlegen, die den öffentlichen Zugriff auf das ansonsten private Objekt-Attribut erlaubt.
field
:reader
:writer
field $size;
field $size :reader;
field $size :writer;
my $sca2 = $sca->month(3);
1 2 3 4 5 6
sub init{ my $self = shift; tie my %ussd, 'Objects', 'ussd' or die $@; %{$self->{STASH}} = ( %{$self->{STASH}}, %ussd); # Werte ins HTML-Template $self->{USSD} = tied(%ussd); }
1 2 3 4 5 6 7 8 9 10
# Eingabe vom Browser sub control{ my $self = shift; if($self->param('update')){ my $raw = $self->bufferdecode; # z.B. aldi, 7,99 $self->{USSD}->merge(@$raw); $self->{USSD}->write; $self->content('USSD updated'); } }
Quoteaber Logik und Kapselung zu verheiraten lässt die Komplexität der Sprachsyntax nur unnötig explodieren.
1 2 3 4 5 6 7 8 9 10 11 12 13
my $self = bless{ 'leap' => undef, # setzt Konstruktor 'month' => undef, # wie Eingegeben 'age' => undef, # wie Vorgegeben oder wird berechnet 'gregdate' => undef, # wie Vorgegeben oder wird berechnet 'wd' => undef, # Wochentag numerisch 'ultimo' => undef, # letzter Tag im Monat 'day' => undef, # wie Eingegeben 'wochentag' => undef, # Wochentag ausgeschrieben in Deutsch 'year' => undef, # wie Eingegeben 'jd' => undef, # wie Eingegeben oder wird berechnet 'julidate' => undef, # wie Vorgegeben oder wird berechnet }, $class;
1 2 3 4 5 6 7 8
my $person = { name => '', vname => '', plz => '', ort => '', str => '', tel => '' };
QuoteDer Zugriff auf die Methode erfolgt innerhalb der Klasse mit $objekt->&methode(...), unter Umgehung der Vererbungshierarchie.
->
->&
1 2 3 4 5 6 7 8 9
class LexicalMethod { my method abc ($x, $y) { say "Internal method abc invoked with x=$x y=$y"; } method xyz { $self->&abc("x", "y"); } }
my $lex = LexicalMethod->new()->xyz(3,4);
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
package Usus; use strict; use warnings; sub new{ my $class = shift; bless{}, $class; } my $pm = sub{ my $self = shift; die "Aha, eine private Methode\n"; }; sub hack{ my $self = shift; $self->$pm(@_); } package main; use strict; use warnings; my $u = Usus->new()->hack;
->xyz()
1 2 3 4
# ref comparison because EditFieldValuetet returns an arrayref except when using template value if ( !ref $Value eq 'ARRAY' ) { $Value = [$Value]; }