Jonathan Rockway
and 1 contributors


File::Attributes::Recursive - Inherit file attributes from parent directories.


Version 0.02


Works like File::Attributes, but will recurse up the directory tree until a matching attribute is found.


None, by default. Specify the functions you'd like to use as arguments to the module. :all means export everything.


get_attribute_recursively($file, [$top], $attribute)

Returns the value of attribute $attribute. If $top is specified, then the search will terminate when the path no longer contains $top. (i.e. if $file is /foo/bar/baz/quux and $top is

get_attributes_recursively($file, [$top])

Returns a hash of key value pairs for all attributes that apply to $file. Only the closest attributes are returned. Given:

      /a            (a = yes, foo = bar)
      /a/b          (b = yes, foo = baz)
      /a/b/c        (c = yes)

get_attributes_recursively('/a/b/c', '/a') will return:

     (a => yes, b => yes, c => yes, foo => baz).

The foo => bar is masked by the "closer" foo => baz.

list_attributes_recursively($file, [$top])

Returns a list of attributes that are defined and apply to $file. Like keys get_attributes_recursively($file, [$top]), but faster.



There are two possible ways for this function to behave -- either recurse until the attribute is removed, or recurse to top, removing the attribute at each level. The first doesn't make sense, and the second is dangerous. If you need this function, write it for the specific needs of your application; I think that's the safest thing to do.

(Note that rm refuses to rm .., so I think there's some precedent here.)


Jonathan Rockway, <jrockway at>


Please report any bugs or feature requests to bug-file-attributes-recursive at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc File::Attributes::Recursive

You can also look for information at:



Copyright 2006 Jonathan Rockway, all rights reserved.

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