パスにある全実行可能ファイルの数(Path::Classの練習)

30分プログラム、その528。モダンなPerl入門 - モダンなPerl入門を眺めていたら、ファイル操作はPath::Classを使うのがモダンらしい。
というわけで、試しにPath::Classを使って、パスにある全実行可能ファイルの数を数えてみた。ちょっと前に「死蔵しているコマンドの数は?(slashdot,AWK Users JP)」というのが流行っていたので、それをマネしてみた。

使ってみたところ、Path::Classを使うとファイル操作をオブジェクト指向でできるよ!、という感じを受けた。そうか、オブジェクト指向がモダンなのか。

使い方

$ perl all-command.pl $path | wc -l
    3486

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# all-command.pl -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/02/16 08:05:06
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#

use strict;
use warnings;
use Path::Class;
use Data::Dumper;

my @dir = map { -e $_ ? dir $_ : () } @ARGV;

for my $dir (@dir) {
    for my $file ($dir->children){
	if(!$file->is_dir &&
	   $file->stat    &&
	   $file->stat->mode & 0111) {
	    print $file->stringify,"\n";
	}
    }
}