Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DfPortable(3)	      User Contributed Perl Documentation	 DfPortable(3)

       Filesys::DfPortable - Perl extension for	filesystem disk	space

	 use Filesys::DfPortable;

	 my $ref = dfportable("C:\\"); # Default block size is 1, which	outputs	bytes
	 if(defined($ref)) {
	    print"Total	bytes: $ref->{blocks}\n";
	    print"Total	bytes free: $ref->{bfree}\n";
	    print"Total	bytes avail to me: $ref->{bavail}\n";
	    print"Total	bytes used: $ref->{bused}\n";
	    print"Percent full:	$ref->{per}\n"

	 my $ref = dfportable("/tmp", 1024); # Display output in 1K blocks
	 if(defined($ref)) {
	    print"Total	1k blocks: $ref->{blocks}\n";
	    print"Total	1k blocks free:	$ref->{bfree}\n";
	    print"Total	1k blocks avail	to me: $ref->{bavail}\n";
	    print"Total	1k blocks used:	$ref->{bused}\n";
	    print"Percent full:	$ref->{per}\n"

       This module provides a portable way to obtain filesystem	disk space

       The module should work with all versions	of Windows (95 and up),	and
       with all	flavors	of Unix	that implement the "statvfs" or	the "statfs"
       calls. This would include Linux,	*BSD, HP-UX, AIX, Solaris, Mac OS X,
       Irix, Cygwin, etc ...

       This module differs from	Filesys::Df in that it has added support for
       Windows,	but does not support open filehandles as a argument.

       "dfportable()" requires a directory argument that represents the
       filesystem you want to query. There is also an optional block size
       argument	so that	you can	tailor the size	of the values returned.	The
       default block size is 1,	this will cause	the function to	return the
       values in bytes.	 If you	never use the block size argument, then	you
       can think of any	instance of "blocks" in	this document to really	mean

       "dfportable()" returns a	reference to a hash. The keys available	in the
       hash are	as follows:

       {blocks}	= Total	blocks on the filesystem.

       {bfree} = Total blocks free on the filesystem.

       {bavail}	= Total	blocks available to the	user executing the Perl
       application. This can be	different than "{bfree}" if you	have per-user
       quotas on the filesystem, or if the super user has a reserved amount.
       "{bavail}" can also be a	negative value because of this.	For instance
       if there	is more	space being used then you have available to you.

       {bused} = Total blocks used on the filesystem.

       {per} = Percent of disk space used. This	is based on the	disk space
       available to the	user executing the application.	In other words,	if the
       filesystem has 10% of its space reserved	for the	superuser, then	the
       percent used can	go up to 110%.

       You can obtain inode information	through	the module as well. But	you
       must call "exists()" on the "{files}" key to make sure the information
       is available. Some filesystems may not return inode information,	for
       example Windows,	and some NFS filesystems.

       Here are	the available inode keys:

       {files} = Total inodes on the filesystem.

       {ffree} = Total inodes free on the filesystem.

       {favail}	= Total	inodes available to the	user executing the
       application.  See the rules for the "{bavail}" key.

       {fused} = Total inodes used on the filesystem.

       {fper} =	Percent	of inodes used on the filesystem. See rules for	the
       "{per}" key.

       If the "dfportable()" call fails	for any	reason,	it will	return
       "undef".	This will probably happen if you do anything crazy like	try to
       get information for /proc, or if	you pass an invalid filesystem name,
       or if there is an internal error. "dfportable()"	will "croak()" if you
       pass it a undefined value.

       Requirements: Your system must contain "statvfs()", "statfs()",
       "GetDiskFreeSpaceA()", or "GetDiskFreeSpaceEx()".  You must be running
       Perl 5.6	or higher.

       Ian Guthrie

       Copyright (c) 2006 Ian Guthrie. All rights reserved.
		      This program is free software; you can redistribute it
		      modify it	under the same terms as	Perl itself.

       statvfs(2), statfs(2), df(1), GetDiskFreeSpaceA,	GetDiskFreeSpaceEx,


perl v5.32.0			  2006-06-25			 DfPortable(3)


Want to link to this manual page? Use this URL:

home | help