Re: perl Tk question
Hi, You are deleting whatever is in $text0 till the énd'. Comment that out and you will see all the values of $i. ... sub prg{ for (my $i=0;$i20;$i++){ # $text0-delete('0.0','end');# commented out $text0-insert('end',$i\n); # sleep 1; } } Bye, Zeray |-+- | | | | | | | | | | | | | | | | |[EMAIL PROTECTED] | | | | | |Sent by: | | |[EMAIL PROTECTED]| | |.com | | | | | |2005-06-01 10:06 AM | | |Please respond to synoptic | |-+- --| | | | To: perl-win32-users@listserv.ActiveState.com | | cc: (bcc: Zeray Abraha/WLR/SC/PHILIPS) | | Subject:perl Tk question | | | | Classification: | | | | | --| Hi All! In the following snippet: use strict; use Tk; require Tk::LabFrame; my $top = new MainWindow; my $bar=$top-LabFrame(-label = 'buttons bar'); $bar-pack; my $exi=$bar-Button(-command=\exi,-text='exit'); $exi-pack(-side='left'); my $prg=$bar-Button(-command=\prg,-text='prg'); $prg-pack(-side='left'); my $fr=$top-LabFrame(); $fr-configure(-height='5',-width=30); $fr-pack(-fill='none'); my $text0=$fr-Text(); $text0-configure(-height='10',-width=20); $text0-pack(-side='top',-fill='none'); MainLoop; sub exi{ $top-destroy; } sub prg{ for (my $i=0;$i20;$i++){ $text0-delete('0.0','end'); $text0-insert('end',$i\n); sleep 1; } } When executing this snippet I see in text0 only the last $i /in for cycle/ What I must add to prg code in order to see all cosequtive values of $i ? ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: Easy way of using module Env, platform independent?
Thanks Roger. I will use the hint you gave me and will further explore/modify it to fit my requirement. Regards, Zeray To: '[EMAIL PROTECTED]' [EMAIL PROTECTED] cc: (bcc: Zeray Abraha/WLR/SC/PHILIPS) Subject:Re: Easy way of using module Env, platform independent? Roger Keane [EMAIL PROTECTED] Classification: Sent by: [EMAIL PROTECTED] .com 2004-11-05 16:51 [EMAIL PROTECTED] wrote: # Hi, # Question. Easy way of using module Env, platform independent. # Want to do the following: (example) # 1. get the PATH environment variable # 2. change it to add an additional search path # 3. put back the modified PATH # 4. execute a program/script using the system command. # Example below works but I don't like it. There must be an easy way, similar to setenv(env_varName=value) # that also takes care of the platform independence. # Your help is appreciated. use strict; my @PATH=(); use Env; # Env qw(PATH); my $mswin=0; my $home=; $mswin=1 if ($^O =~ /MSWin/); @PATH=split(/;/,$ENV{'PATH'}) if $mswin; # for windows @PATH=split(/:/,$ENV{'PATH'}) if !$mswin;# for unix $home=$ENV{'HOMEPATH'} if $mswin;# for windows $home=$ENV{'HOME'} . '/' if !$mswin; # for unix print home=$home\n; my $toolpath=${home}tmp/bin; # in this path is my executable $toolpath =~ s/\//\\/g if $mswin;# adjust for windows print toolpath=$toolpath\n; push(@PATH, $toolpath); # add to the PATH environment variable $ENV{'PATH'}=join(($mswin)? ';':':', @PATH); # set the PATH env. thus print PATH=,$ENV{'PATH'}, \n;# see if toolpath is added # execute your program now using system command. # For this example, for unix, 'chmod +x ztest.bat'; ztest.bat prints 'some message' system(ztest.bat); print Unknown command\n if $?; # Thanks # zeray If you version of Perl is recent enough (5.6.0 or better, I think) the array support for the path-like variables is already built-in to the Env module, and is platform independent (uses the $Config{path_sep} variable). You still need to be wary of path directory separators. There are platform independent modules for constructing the pathnames (see File::Spec), but here's a qnd approach that works for windoze XP and *nix: testedcode #!perl -w use strict; require v5.6.0; use Env qw( @PATH $HOME $HOMEDRIVE $HOMEPATH ); sub isWindoze() { return $^O =~ /Win32/; } sub getHome() { return isWindoze() ? $HOMEDRIVE . $HOMEPATH : $HOME; } sub add_paths(@) { my @paths = @_; my $dir_sep = isWindoze() ? \\ : /; push @PATH, map{ s/[\/\\]+/${dir_sep}/go; $_ } @paths; } my $home = getHome() || die( you are homeless!\n ); print( Before add_paths:\n , join(\n , @PATH), \n ); add_paths( $home/tmp/bin, temp, $home/temp, ///temp ); print( After add paths:\n , join(\n , @PATH), \n ); /testedcode Several things to think about (left as an exercise
Easy way of using module Env, platform independent?
# Hi, # Question. Easy way of using module Env, platform independent. # Want to do the following: (example) # 1. get the PATH environment variable # 2. change it to add an additional search path # 3. put back the modified PATH # 4. execute a program/script using the system command. # Example below works but I don't like it. There must be an easy way, similar to setenv(env_varName=value) # that also takes care of the platform independence. # Your help is appreciated. use strict; my @PATH=(); use Env; # Env qw(PATH); my $mswin=0; my $home=; $mswin=1 if ($^O =~ /MSWin/); @PATH=split(/;/,$ENV{'PATH'}) if $mswin; # for windows @PATH=split(/:/,$ENV{'PATH'}) if !$mswin;# for unix $home=$ENV{'HOMEPATH'} if $mswin;# for windows $home=$ENV{'HOME'} . '/' if !$mswin; # for unix print home=$home\n; my $toolpath=${home}tmp/bin; # in this path is my executable $toolpath =~ s/\//\\/g if $mswin;# adjust for windows print toolpath=$toolpath\n; push(@PATH, $toolpath); # add to the PATH environment variable $ENV{'PATH'}=join(($mswin)? ';':':', @PATH); # set the PATH env. thus print PATH=,$ENV{'PATH'}, \n;# see if toolpath is added # execute your program now using system command. # For this example, for unix, 'chmod +x ztest.bat'; ztest.bat prints 'some message' system(ztest.bat); print Unknown command\n if $?; # Thanks # zeray ___ Perl-Win32-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs