首页 > 其他 > 详细

perl 递归两例

时间:2016-05-18 10:59:19      阅读:264      评论:0      收藏:0      [点我收藏+]

Perl 作为一门文本处理语言,自然会有他的递归写法,小弟这边分享两个例子,希望对大家能有用!

阶乘(最经典的递归)

#!/usr/bin/perl -s 

my $Result = 1;
sub GetResult{
        my $num = shift;
        if( $num != 1 ){
                $Result = $Result * $num;
                print "Result:$Result | num:$num\n";
                $num--;
                GetResult($num);
        }

}

GetResult(‘10‘);

运行结果:

[root@virfed64 ~]# ./GetResult.pl 
Result:10 | num:10
Result:90 | num:9
Result:720 | num:8
Result:5040 | num:7
Result:30240 | num:6
Result:151200 | num:5
Result:604800 | num:4
Result:1814400 | num:3
Result:3628800 | num:2



遍历linux的文件目录找出自己想要的文件

[root@virfed64 ~]# cat Scan.pl 
#!/usr/bin/perl -s 
#
use Cwd;
sub ScanDirectory{
    my $workdir = shift;
    my $startdir = cwd;
    chdir $workdir or die "Unable to enter dir $workdir:$! \n";
    opendir my $DIR,‘.‘ or die "Unable to  open $workdir:$! \n";
    my @names = readdir $DIR or die "Unable to read $workdir:$!\n";
    closedir $DIR;
    foreach my $name (@names){
        next if ($name eq ‘.‘);
        next if ($name eq ‘..‘);
        if ( -d $name ){
            ScanDirectory($name);
            next;
        }
        if($name eq ‘core‘){
            if (defined $r ){
                unlink $name or die "Unable to delete $name :$! \n";
            }
            else{
                print "Found one in $workdir!\n";
            }
        }
    }
    chdir $startdir or die "Unable to change to dir $startdir:$!\n";
}
ScanDirectory(‘.‘);


运行结果就是找到文件或者删除

perl 递归两例

原文:http://realsilsa.blog.51cto.com/8240339/1774587

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!