++ed by:

1 non-PAUSE user.

Vadim V. Kouevda


Tie::FileSystem - Access file system via a Perl hash


  use Tie::FileSystem;
  use Data::Dumper;

  my %data;
  tie %data, "Tie::FileSystem", ( 'dir' => "/" );
  print Dumper($data{'etc'}{'passwd'});


Tie::FileSystem represents file system as a Perl hash. Each hash key corresponds to name of a directory or a file. For example, for a file "/etc/passwd" it will be $data{'etc'}{'passwd'}. Contents of the file "/etc/passwd" becomes a value corresponding to the $data{'etc'}{'passwd'}.

Standard handling procedure for directories is to store a listing of files in the directory as keys. Standard procedure for files is to store a contents of the file in the scalar value.

For certain files with known structure it is possible to define subroutines for special handling. "Tie::FileSystem::System" defines subroutines for handling system files and, for starters, has 'passwd' handling subroutine. "/etc/passwd" can be represented asa hash with following structure: $data{'etc'}{'passwd'}{$username}{$field}.


  tie %data, "Tie::FileSystem",
    ( 'dbg' => 0, 'buf_size' => 10, 'dir' => "/" );
  'dbg' - level of debug output
    0 - 'SILENT', default # No output at all, ERRORs are suppressed
    1 - 'ERROR'           # ERRORs are printed to STDERR
    2 - 'WARNING'         # WARNINGs are printed to STDERR
    3 - 'INFO'            # Information messages
    4 - 'D:IN/OUT'        # Important variables
    5 - 'D:LOGIC'         # Logical desicions
    6 - 'D:VARS'          # Variables

  'buf_size' - buffer limit for file reading

  'dir' - directory to tie to

Public Methods



Debian 3.1, Perl, v5.8.8.

Windows XP, ActiveState Perl, v5.8.8.


The module is read only and does not permit overwrite or delete files.

Under Windows '/' corresponds to 'C:'.

If you try to tie hash %data to '/' and then print Dumper(%data), module will traverse the entire file system on demand!


None known.


Vadim V. Kouevda, initdotd@gmail.com


Copyright (c) 2003-2007, Vadim V. Kouevda, "KAITS, Inc."

This library is free software; you may redistribute it and/or modify it under the same terms as Perl itself.

These terms are your choice of any of (1) the Perl Artistic Licence, or (2) version 2 of the GNU General Public License as published by the Free Software Foundation, or (3) any later version of the GNU General Public License.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this library program; it should be in the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA

For licensing inquiries, contact the author at initdotd@gmail.com


Module comes with ABSOLUTELY NO WARRANTY. For details, see the license.


The latest version can be obtained from CPAN


Tie::FileSystem::System(3), Tie::File(3)