le decor

- un champ de saisie avec controle (EntryCheck)
- un bouton déclencheur (Button)
- une zone texte (Text)
- un sous-programme qui multiplie par 2 la donnée saisie et affiche le résultat dans la zone texte

1ère methode

le bouton appelle le sous-programme, ce dernier manipule lui-même le champ saisi

Cela fonctionne

2ème methode

le bouton appelle le sous-programme en lui passant le champ saisi en paramètre

Cela ne fonctionne pas : 0 est affiché. Je ne comprends pas pourquoi.

-------------

1ère méthode

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use Tk;
use Tk::EntryCheck;
my $saisie;
my $main = MainWindow->new(-title => 'multiplier par 2');
my $ymannum = $main->EntryCheck(-maxlength =>3,
                               -pattern => qr/\d/, # que des chiffres
                               -textvariable => \$saisie
                               )->pack( qw/ -side left / );
my $btmannum= $main->Button(-background => 'yellow', 
                           -text => 'calculez',
                           -command => \&calculez
                           ) -> pack( qw/ -side left / );                               
my $resu = $main->Text ('-width'=> 40, '-height' => 1
                        )->pack;
MainLoop;
sub calculez
{
	$resu->delete('1.0', 'end');
    $resu->insert('end', $saisie * 2);
}
2ème méthode

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use strict;
use Tk;
use Tk::EntryCheck;
my $saisie;
my $main = MainWindow->new(-title => 'multiplier par 2');
my $ymannum = $main->EntryCheck(-maxlength =>3,
                               -pattern => qr/\d/, # que des chiffres
                               -textvariable => \$saisie
                               )->pack( qw/ -side left / );
my $btmannum= $main->Button(-background => 'yellow', 
                           -text => 'calculez',
                           -command => [\&calculez,$saisie]
                           ) -> pack( qw/ -side left / );                               
my $resu = $main->Text ('-width'=> 40, '-height' => 1
                        )->pack;
MainLoop;
sub calculez
{
    my ($nombre) = @_;
	$resu->delete('1.0', 'end');
    $resu->insert('end', $nombre * 2);
}