Schrift
[thread]5194[/thread]

bind() auf Objekt-Wert?: Geht das?



<< >> 2 Einträge, 1 Seite
pktm
 2006-05-31 01:33
#45511 #45511
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe mein Programm ein bischen umgeschrieben. Im Zuge der Einführung einer Konfigurationsdatei habe ich mich dazu entschlossen meine Script-Werte über eine param()-Funktion zugänglich zu machen. Die habe ich mir aus CGI::Application geklaut:
Code: (dl )
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
sub param {
my $self = shift;
my (@data) = (@_);

# First use? Create new __PARAMS!
$self->{__PARAMS} = {} unless (exists($self->{__PARAMS}));

my $rp = $self->{__PARAMS};

# If data is provided, set it!
if (scalar(@data)) {
# Is it a hash, or hash-ref?
if (ref($data[0]) eq 'HASH') {
# Make a copy, which augments the existing contents (if any)
%$rp = (%$rp, %{$data[0]});
} elsif ((scalar(@data) % 2) == 0) {
# It appears to be a possible hash (even # of elements)
%$rp = (%$rp, @data);
} elsif (scalar(@data) > 1) {
croak("Odd number of elements passed to param(). Not a valid hash");
}
} else {
# Return the list of param keys if no param is specified.
return (keys(%$rp));
}

# If exactly one parameter was sent to param(), return the value
if (scalar(@data) <= 2) {
my $param = $data[0];
return $rp->{$param};
}
return; # Otherwise, return undef
} # /param


Jetzt habe ich nur das Problem, dass ich meine Textfelder nicht mehr (wie zuvor) komfortabel an irgendwleche globalen Variablen binden kann, die ich dann irgendwann im Script wieder auswerte. Gibt es da vielelciht doch eine Möglichkeit sowas hier $quellEntry = $mw->Entry(-textvariable => \$quellverz, -width=>60); mit einem Objekt über die Param-Methode zu machen? $quellEntry = $mw->Entry(-textvariable => \$self->param('Quellverzeichnis'), -width=>60); geht nicht.

Ideen? Vorschläge? Ansonsten müsste ich wohl immer auf Änderungen überwache und dann eine kleine anonmye Sub param() aufrufen lassen.

Grüße, pktm

Edit betterworld: Smiley-Problem geloest\n\n

<!--EDIT|betterworld|1149031952-->
http://www.intergastro-service.de (mein erstes CMS :) )
Ishka
 2006-05-31 03:21
#45512 #45512
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Dazu könntest du die Funktionalität zum Überprüfen der Eingabe ausnützen. Dazu gibst du den Parameter -validatecommand mit einer sub, die bei Eingaben aufgerufen wird an, wobei diese immer 1 zurückgeben sollte. Außerdem noch -validate auf 'all'.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< >> 2 Einträge, 1 Seite



View all threads created 2006-05-31 01:33.