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('.');


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