GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  TEMPLATE::PLUGIN::FILE (3)

.ds Aq ’

NAME

Template::Plugin::File - Plugin providing information about files

CONTENTS

SYNOPSIS



    [% USE File(filepath) %]
    [% File.path %]         # full path
    [% File.name %]         # filename
    [% File.dir %]          # directory



DESCRIPTION

This plugin provides an abstraction of a file. It can be used to fetch details about files from the file system, or to represent abstract files (e.g. when creating an index page) that may or may not exist on a file system.

A file name or path should be specified as a constructor argument. e.g.



    [% USE File(foo.html) %]
    [% USE File(foo/bar/baz.html) %]
    [% USE File(/foo/bar/baz.html) %]



The file should exist on the current file system (unless nostat option set, see below) as an absolute file when specified with as leading ’/’ as per ’/foo/bar/baz.html’, or otherwise as one relative to the current working directory. The constructor performs a stat() on the file and makes the 13 elements returned available as the plugin items:



    dev ino mode nlink uid gid rdev size
    atime mtime ctime blksize blocks



e.g.



    [% USE File(/foo/bar/baz.html) %]
   
    [% File.mtime %]
    [% File.mode %]
    ...



In addition, the user and group items are set to contain the user and group names as returned by calls to getpwuid() and getgrgid() for the file uid and gid elements, respectively. On Win32 platforms on which getpwuid() and getgrid() are not available, these values are undefined.



    [% USE File(/tmp/foo.html) %]
    [% File.uid %]      # e.g. 500
    [% File.user %]     # e.g. abw



This user/group lookup can be disabled by setting the noid option.



    [% USE File(/tmp/foo.html, noid=1) %]
    [% File.uid %]      # e.g. 500
    [% File.user %]     # nothing



The isdir flag will be set if the file is a directory.



    [% USE File(/tmp) %]
    [% File.isdir %]    # 1



If the stat() on the file fails (e.g. file doesn’t exists, bad permission, etc) then the constructor will throw a File exception. This can be caught within a TRY...CATCH block.



    [% TRY %]
       [% USE File(/tmp/myfile) %]
       File exists!
    [% CATCH File %]
       File error: [% error.info %]
    [% END %]



Note the capitalisation of the exception type, ’File’, to indicate an error thrown by the File plugin, to distinguish it from a regular file exception thrown by the Template Toolkit.

Note that the File plugin can also be referenced by the lower case name ’file’. However, exceptions are always thrown of the File type, regardless of the capitalisation of the plugin named used.



    [% USE file(foo.html) %]
    [% file.mtime %]



As with any other Template Toolkit plugin, an alternate name can be specified for the object created.



    [% USE foo = file(foo.html) %]
    [% foo.mtime %]



The nostat option can be specified to prevent the plugin constructor from performing a stat() on the file specified. In this case, the file does not have to exist in the file system, no attempt will be made to verify that it does, and no error will be thrown if it doesn’t. The entries for the items usually returned by stat() will be set empty.



    [% USE file(/some/where/over/the/rainbow.html, nostat=1)
    [% file.mtime %]     # nothing



METHODS

All File plugins, regardless of the nostat option, have set a number of items relating to the original path specified.

    path

The full, original file path specified to the constructor.



    [% USE file(/foo/bar.html) %]
    [% file.path %]     # /foo/bar.html



    name

The name of the file without any leading directories.



    [% USE file(/foo/bar.html) %]
    [% file.name %]     # bar.html



    dir

The directory element of the path with the filename removed.



    [% USE file(/foo/bar.html) %]
    [% file.name %]     # /foo



    ext

The file extension, if any, appearing at the end of the path following a ’.’ (not included in the extension).



    [% USE file(/foo/bar.html) %]
    [% file.ext %]      # html



    home

This contains a string of the form ’../..’ to represent the upward path from a file to its root directory.



    [% USE file(bar.html) %]
    [% file.home %]     # nothing
   
    [% USE file(foo/bar.html) %]
    [% file.home %]     # ..
   
    [% USE file(foo/bar/baz.html) %]
    [% file.home %]     # ../..



    root

The root item can be specified as a constructor argument, indicating a root directory in which the named file resides. This is otherwise set empty.



    [% USE file(foo/bar.html, root=/tmp) %]
    [% file.root %]     # /tmp



    abs

This returns the absolute file path by constructing a path from the root and path options.



    [% USE file(foo/bar.html, root=/tmp) %]
    [% file.path %]     # foo/bar.html
    [% file.root %]     # /tmp
    [% file.abs %]      # /tmp/foo/bar.html



    rel(path)

This returns a relative path from the current file to another path specified as an argument. It is constructed by appending the path to the ’home’ item.



    [% USE file(foo/bar/baz.html) %]
    [% file.rel(wiz/waz.html) %]      # ../../wiz/waz.html



EXAMPLES



    [% USE file(/foo/bar/baz.html) %]
   
    [% file.path  %]      # /foo/bar/baz.html
    [% file.dir   %]      # /foo/bar
    [% file.name  %]      # baz.html
    [% file.home  %]      # ../..
    [% file.root  %]      # 
    [% file.abs   %]      # /foo/bar/baz.html
    [% file.ext   %]      # html
    [% file.mtime %]      # 987654321
    [% file.atime %]      # 987654321
    [% file.uid   %]      # 500
    [% file.user  %]      # abw

    [% USE file(foo.html) %]
   
    [% file.path %]           # foo.html
    [% file.dir  %]       # 
    [% file.name %]           # foo.html
    [% file.root %]       # 
    [% file.home %]       # 
    [% file.abs  %]       # foo.html

    [% USE file(foo/bar/baz.html) %]
   
    [% file.path %]           # foo/bar/baz.html
    [% file.dir  %]       # foo/bar
    [% file.name %]           # baz.html
    [% file.root %]       # 
    [% file.home %]       # ../..
    [% file.abs  %]       # foo/bar/baz.html

    [% USE file(foo/bar/baz.html, root=/tmp) %]
   
    [% file.path %]           # foo/bar/baz.html
    [% file.dir  %]       # foo/bar
    [% file.name %]           # baz.html
    [% file.root %]       # /tmp
    [% file.home %]       # ../..
    [% file.abs  %]       # /tmp/foo/bar/baz.html

    # calculate other file paths relative to this file and its root
    [% USE file(foo/bar/baz.html, root => /tmp/tt2) %]
   
    [% file.path(baz/qux.html) %]         # ../../baz/qux.html
    [% file.dir(wiz/woz.html)  %]     # ../../wiz/woz.html



AUTHORS

Michael Stevens wrote the original Directory plugin on which this is based. Andy Wardley split it into separate File and Directory plugins, added some extra code and documentation for VIEW support, and made a few other minor tweaks.

COPYRIGHT

Copyright 2000-2007 Michael Stevens, Andy Wardley.

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

SEE ALSO

Template::Plugin, Template::Plugin::Directory, Template::View
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 TEMPLATE::PLUGIN::FILE (3) 2014-04-23

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.