#!/usr/bin/perl -- use strict; use warnings; use Path::Tiny qw/ path /; Main( @ARGV ); exit( 0 ); sub Main { my( $dir ) = @_; my $readdir = path( $dir )->realpath ->iterator( { qw/ recurse 0 / }); while( my $file = $readdir->() ){ Staterator( $file ); } } sub Staterator { local( $_ ) = @_; if( -z ){ ... } }