NAME
TPath::Forester::File::Attributes - the basic attributes of TPath::Forester::File::Node objects
VERSION
version 0.003
DESCRIPTION
TPath::Forester::File::Attributes
provides the attributes available to all TPath::Forester::File foresters.
@text
The actual text of the file, if it is a text file, or undef
.
@txt
An alias for @txt
.
@T
Whether the file is a text file according to TPath::Forester::File::Node::is_text()
.
@bin
Like @B
but true only for files, not directories.
@B
Equivalent to the -B
file test operator. True for binary files, empty files, and directories.
@oid
File owner id. This would be called @uid
, but that attribute name is already taken by the standard attribute library.
@gid
File group id.
@user
Returns the name corresponding to the file's uid.
//*[@user = 'foo'] # find all foo's files
@group
Returns the name corresponding to the file's gid.
//*[@group = 'research'] # find all the files belonging to the research group
@lines
The lines in the file returned as an array reference. If the file is not a text file, this will be an empty array.
@exec('rm -rf _')
Executes the command parameter, replacing _
with the context file. For example, the following will remove all text files from a directory:
//@txt[@exec('rm -rf _')]
Anything printed to STDOUT is captured and returned as the value of the attribute, the empty string being returned as undef
.
@kb(2)
Converts a number to a number of kilobytes. This saves doing the conversion oneself, so you can write expressions like
//@f[@size > @kb(12)]
instead of
//@f[@size > 12 * 1024]
or
//@f[@size > 12288]
There is a slight efficiency cost in using @kb
, as the conversion will be done for every file tested.
@mb(2)
Converts a number to a number of megabytes. This saves doing the conversion oneself, so you can write expressions like
//@f[@size > @mb(12)]
instead of
//@f[@size > 12 * 1024 * 1024]
or
//@f[@size > 12582912]
There is a slight efficiency cost in using @mb
, as the conversion will be done for every file tested.
@gb(2)
Converts a number to a number of gigabytes. This saves doing the conversion oneself, so you can write expressions like
//@f[@size > @gb(12)]
instead of
//@f[@size > 12 * 1024 * 1024 * 1024]
or
//@f[@size > 12884901888]
There is a slight efficiency cost in using @gb
, as the conversion will be done for every file tested.
@me
The real user id of the currently running process; i.e., <$<
>.
ATTRIBUTES
@broken
True if stat
returns the empty list for this file.
@ext('txt')
True if the file has the given extension. The following are equivalent
//@ext('txt')
//~\.txt$~
//*[@name =| '.txt']
The latter is second shorter but also more cryptic. In its implementation @ext
is more like the last expression, but it applies the test on selection rather than filtering.
@name
The file (or directory) name.
@encoding
, @enc
Encoding detected, if any.
AUTHOR
David F. Houghton <dfhoughton@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by David F. Houghton.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.