[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl] Final step (?)



"Thomas R. Kimpton" <tkimpton@maned.com> writes:
}Oops sent a version of this, before it was done, to Strider,
}via email... here's what I wound up with:
}
}use Mac::Files;
}
}$dir = "Internal:temp";
}chdir $dir || die "Can't chdir $dir : $!";
}&readDir( $dir );
}
}sub readDir (){
}	local($path) = @_;
}	local($i);
}	local($fil);
}	opendir( DIR, $path ) || die "Can't open $path : $!";
}	local(@fileList) = readdir( DIR );
}	closedir( DIR );
}
}	# Unless you change $[, Perl arrays are zero based...
}	# $# is the index of the last item in the array, so
}	# we need to add 1 to get the size of the array.
}	$numFiles += $#fileList + 1;

which you can also get by $numFiles = @fileList;

}	for ($i = 0; $i <= $#fileList; $i++) {
}		$fil = "$path:$fileList[$i]";

One bizzare thing that can happen is that you can run across a file whose
name is "" (the null string).  Stuffit Expander used to have a habit of
making these.  Maybe a "next unless $fileList[$i];" is a good idea right
about here.

}		@info = stat($fil);
}#		print "$fil($fileList[$i]) $info[2]\n";
}		$has = FSpGetCatInfo($fil);
}			# remember: directories are files, also... just special
}			# ones that contain overhead, add them in to the
}size also.
}		$total += $has->{ioFlLgLen} + $has->{ioFlRLgLen};
}			# physical size is how many blocks (in bytes) the
}file takes
}			# up and will be different on different sized
}volumnes. HFS
}			# doesn't do frags (though, you'd still have a physical
}			# size > logical size with frags.)
}		$totalPhys += $has->{ioFlPyLen} + $has->{ioFlRPyLen};
}		# file tests with '_' use the result of the last stat call.
}		if(-d _) {

I think you'd better also put a

		if (! -l _ && -d _)

here, because I believe aliases to folders answer true to -d.  If you have
an alias in the wrong place, you can find yourself looping forever.

}			&readDir( "$fil" );
}		}
}	}
}}
}print "$numFiles for $total(logical) bytes, $totalPhys(physical) bytes\n";
}
}Tom Kimpton
}--
}Mrs. Bun: Have you got anything without spam?
}Waitress: Well, there's spam egg sausage and spam, that's not got
}much spam in it.
}Mrs. Bun: I don't want any spam!
}
}
}


---
Paul J. Schinder
NASA Goddard Space Flight Center
Code 693, Greenbelt, MD 20771
schinder@pjstoaster.pg.md.us



***** Want to unsubscribe from this list?
***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch