@files = map { decode( 'utf8', "$dir/".$_ ) } sort @files;
####
my $showbutton2 = $mw->Button(
-text => 'Cancel',
-bg => 'red',
-command => sub {exit} )->pack;
MainLoop();
####
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use Tk::Pane;
use Encode;
my $topdir = '/root/Desktop';
my(@subdirs) = get_sub_dirs($topdir);
my $mw = tkinit();
$mw->geometry('200x400+200+200');
my $sp = $mw->Scrolled('Pane',
-scrollbars => 'osoe',
-sticky => 'nwse')->pack(
-expand=>1,
-fill=>'both'
);
my @cbvalues;
my @cbnames;
my $count = 0;
foreach my $d( @subdirs){
$cbnames[$count] = $d;
$sp->Checkbutton(-text => $d,
-font=>[arial => 12],
-onvalue => 1,
-offvalue => 0,
-variable => \$cbvalues[$count],
-font => 'small',
-bg => 'White',
)->pack(-anchor=>'w')->pack();
$count++;
}
my $showbutton1 = $mw->Button(
-text => 'OK',
-bg => 'green',
-command => sub {
my @selected = ();
foreach my $c( 0.. $count ){
if ( $cbvalues[$c] ){
push @selected, $cbnames[$c];
}
}
open (MYFILE, '>>', '/root/Desktop/System.pm');
print MYFILE "@selected\n";
close (MYFILE);
print "@selected\n";
})->pack();
my $showbutton2 = $mw->Button(
-text => 'Cancel',
-bg => 'red',
-command => sub {exit} )->pack;
MainLoop();
sub get_sub_dirs {
my ($dir) = @_;
opendir my $dh, $dir or die "Error: $!";
my @files = grep !/^\.\.?$/, readdir $dh;
closedir $dh;
@files = map { decode( 'utf8', "$dir/".$_ ) } sort @files;
my @sdirs;
for my $file ( @files ) {
if(!-f $file){push @sdirs,$file;}
}
return @sdirs;
}