perl 遞歸兩例

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


運行結果就是找到文件或者刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章