Your IP : 3.14.244.90


Current Path : /usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/Plugin/
Upload File :
Current File : //usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/Plugin/File.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
  <head>
    <title>Template::Plugin::File</title>
    <link rel="stylesheet" type="text/css" href="../../../css/blue.css" title="Clear Blue">
    <link rel="alternate stylesheet" type="text/css" href="../../../css/orange.css" title="Clear Orange">
    <link rel="alternate stylesheet" type="text/css" href="../../../css/green.css" title="Clear Green">
    <link rel="alternate stylesheet" type="text/css" href="../../../css/purple.css" title="Clear Purple">
    <link rel="alternate stylesheet" type="text/css" href="../../../css/grey.css" title="Clear Grey">
    <!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="../../../css/ie6.css" />
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/css/print.css" media="print">
    <script type="text/javascript" src="../../../js/tt2.js"></script>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <meta name="author" content="Andy Wardley">
  </head>
  <body id="body"> 
    <div id="layout">
        <div id="header">
          <a href="../../../index.html" id="logo" alt="" title="Click for the Home Page"><span class="alt">TT2 Home Page</span></a>
          <ul id="trail">
            <li><a href="../../../modules/index.html">Modules</a></li>
            <li><a href="../../../modules/Template/index.html">Template::*</a></li>
            <li><a href="../../../modules/Template/Plugin/index.html">Plugin::*</a></li>
            <li class="last"><a href="../../../modules/Template/Plugin/File.html">File.pm</a></li>
          </ul>
          <div class="controls">
            <a href="#" class="menu show" onclick="widescreen_off(); return false" title="Show Menu">
              <span class="about">Click to view the menu.  It's very nice.</span>
            </a>
            <a href="#" class="menu hide" onclick="widescreen_on();  return false" title="Hide Menu">
              <span class="about">Click to hide the menu and go all widescreen!</span>
            </a>
          
          <div class="pager">
            <a href="../../../modules/Template/Plugin/Dumper.html" title="Template::Plugin::Dumper" class="go back">Back<span class="about"><h4>Template::Plugin::Dumper</h4>Plugin interface to Data::Dumper</span></a>
            <a href="../../../modules/Template/Plugin/index.html" title="Template::Plugin::* Modules" class="go up">Up<span class="about"><h4>Template::Plugin::* Modules</h4></span></a>
            <a href="../../../modules/Template/Plugin/Filter.html" title="Template::Plugin::Filter" class="go next">Next<span class="about"><h4>Template::Plugin::Filter</h4>Base class for plugin filters</span></a>
          </div>
          </div>
          <h1 class="headline">Template::Plugin::File</h1>
          <h2 class="subhead">Plugin providing information about files</h1>
        
        </div>
        <div id="page">
          <div id="sidebar">
            <a href="../../../index.html" id="logo"></a>
            <div id="menu">
              <ul class="menu">
                <li class="l0 first"><a href="../../../manual/index.html">Manual</a></li>
                <li class="l0"><a href="../../../modules/index.html" class="warm">Modules</a></li>
                <li class="l1"><a href="../../../modules/Template.html">Template.pm</a></li>
                <li class="l1"><a href="../../../modules/Template/index.html" class="warm">Template::*</a></li>
                <li class="l2"><a href="../../../modules/Template/Base.html">Base.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Config.html">Config.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Constants.html">Constants.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Context.html">Context.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Directive.html">Directive.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Document.html">Document.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Exception.html">Exception.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Filters.html">Filters.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Grammar.html">Grammar.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Iterator.html">Iterator.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Namespace/index.html">Namespace::*</a></li>
                <li class="l2"><a href="../../../modules/Template/Parser.html">Parser.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Plugin.html">Plugin.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Plugin/index.html" class="warm">Plugin::*</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Autoformat.html">Autoformat.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/CGI.html">CGI.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Datafile.html">Datafile.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Date.html">Date.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Directory.html">Directory.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Dumper.html">Dumper.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/File.html" class="warm">File.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Filter.html">Filter.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Format.html">Format.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/HTML.html">HTML.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Image.html">Image.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Iterator.html">Iterator.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Math.html">Math.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Pod.html">Pod.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Procedural.html">Procedural.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/String.html">String.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Table.html">Table.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/URL.html">URL.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/View.html">View.pm</a></li>
                <li class="l3"><a href="../../../modules/Template/Plugin/Wrap.html">Wrap.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Plugins.html">Plugins.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Provider.html">Provider.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Service.html">Service.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Stash.html">Stash.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/Stash/index.html">Stash::*</a></li>
                <li class="l2"><a href="../../../modules/Template/Test.html">Test.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/VMethods.html">VMethods.pm</a></li>
                <li class="l2"><a href="../../../modules/Template/View.html">View.pm</a></li>
                <li class="l0"><a href="../../../tools/index.html">Tools</a></li>
                <li class="l0 last"><a href="../../../tutorial/index.html">Tutorial</a></li>
              </ul>
              <div class="foot"></div>
            </div>
          </div>
          <div id="content">
          <div class="section">
            <div class="head">
              <h1 id="contents" onclick="switch_section(this)" title="Click title to show/hide section content.">Contents</h1>
              <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
            </div>
            <div class="body">
              <ul class="toc">
                  <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li>
                  <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li>
                  <li class=""><a href="#METHODS">METHODS</a></li>
                  <li class="sub"><a href="#section_path">path</a></li>
                  <li class="sub"><a href="#section_name">name</a></li>
                  <li class="sub"><a href="#section_dir">dir</a></li>
                  <li class="sub"><a href="#section_ext">ext</a></li>
                  <li class="sub"><a href="#section_home">home</a></li>
                  <li class="sub"><a href="#section_root">root</a></li>
                  <li class="sub"><a href="#section_abs">abs</a></li>
                  <li class="sub"><a href="#method_rel">rel(path)</a></li>
                  <li class=""><a href="#EXAMPLES">EXAMPLES</a></li>
                  <li class=""><a href="#AUTHORS">AUTHORS</a></li>
                  <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li>
                  <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li>
              
              </ul>
            </div>
          </div>
          
                <div class="pod">
            <div class="section">
              <div class="head">
                <h1 id="SYNOPSIS" onclick="switch_section(this)" title="Click title to show/hide section content.">SYNOPSIS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <pre>[% USE File(filepath) %]
[% File.path %]         # full path
[% File.name %]         # filename
[% File.dir %]          # directory</pre>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="DESCRIPTION" onclick="switch_section(this)" title="Click title to show/hide section content.">DESCRIPTION</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      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.
                    </p>
                    <p>
                      A file name or path should be specified as a constructor argument. e.g.
                    </p>
                    <pre>[% USE File('foo.html') %]
[% USE File('foo/bar/baz.html') %]
[% USE File('/foo/bar/baz.html') %]</pre>
                    <p>
                      The file should exist on the current file system (unless
                      <code>nostat</code> option set, see below) as an absolute file when
                      specified with as leading '<code>/</code>' as per
                      '<code>/foo/bar/baz.html</code>', or otherwise as one relative to the
                      current working directory. The constructor performs a <code>stat()</code>
                      on the file and makes the 13 elements returned available as the plugin
                      items:
                    </p>
                    <pre>dev ino mode nlink uid gid rdev size 
atime mtime ctime blksize blocks</pre>
                    <p>
                      e.g.
                    </p>
                    <pre>[% USE File('/foo/bar/baz.html') %]

[% File.mtime %]
[% File.mode %]
...</pre>
                    <p>
                      In addition, the <code>user</code> and <code>group</code> items are set
                      to contain the user and group names as returned by calls to
                      <code>getpwuid()</code> and <code>getgrgid()</code> for the file
                      <code>uid</code> and <code>gid</code> elements, respectively. On Win32
                      platforms on which <code>getpwuid()</code> and <code>getgrid()</code> are
                      not available, these values are undefined.
                    </p>
                    <pre>[% USE File('/tmp/foo.html') %]
[% File.uid %]      # e.g. 500
[% File.user %]     # e.g. abw</pre>
                    <p>
                      This user/group lookup can be disabled by setting the <code>noid</code>
                      option.
                    </p>
                    <pre>[% USE File('/tmp/foo.html', noid=1) %]
[% File.uid %]      # e.g. 500
[% File.user %]     # nothing</pre>
                    <p>
                      The <code>isdir</code> flag will be set if the file is a directory.
                    </p>
                    <pre>[% USE File('/tmp') %]
[% File.isdir %]    # 1</pre>
                    <p>
                      If the <code>stat()</code> on the file fails (e.g. file doesn't exists,
                      bad permission, etc) then the constructor will throw a <code>File</code>
                      exception. This can be caught within a <code>TRY...CATCH</code> block.
                    </p>
                    <pre>[% TRY %]
   [% USE File('/tmp/myfile') %]
   File exists!
[% CATCH File %]
   File error: [% error.info %]
[% END %]</pre>
                    <p>
                      Note the capitalisation of the exception type, '<code>File</code>', to
                      indicate an error thrown by the <code>File</code> plugin, to distinguish
                      it from a regular <code>file</code> exception thrown by the Template
                      Toolkit.
                    </p>
                    <p>
                      Note that the <code>File</code> plugin can also be referenced by the
                      lower case name '<code>file</code>'. However, exceptions are always
                      thrown of the <code>File</code> type, regardless of the capitalisation of
                      the plugin named used.
                    </p>
                    <pre>[% USE file('foo.html') %]
[% file.mtime %]</pre>
                    <p>
                      As with any other Template Toolkit plugin, an alternate name can be
                      specified for the object created.
                    </p>
                    <pre>[% USE foo = file('foo.html') %]
[% foo.mtime %]</pre>
                    <p>
                      The <code>nostat</code> option can be specified to prevent the plugin
                      constructor from performing a <code>stat()</code> 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
                      <code>stat()</code> will be set empty.
                    </p>
                    <pre>[% USE file('/some/where/over/the/rainbow.html', nostat=1) 
[% file.mtime %]     # nothing</pre>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="METHODS" onclick="switch_section(this)" title="Click title to show/hide section content.">METHODS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      All <code>File</code> plugins, regardless of the <code>nostat</code>
                      option, have set a number of items relating to the original path
                      specified.
                    </p>
                    <div class="subsection">
                  <div class="head">
                    <h2 id="section_path" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">path</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The full, original file path specified to the constructor.
                        </p>
                        <pre>[% USE file('/foo/bar.html') %]
[% file.path %]     # /foo/bar.html</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_name" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">name</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The name of the file without any leading directories.
                        </p>
                        <pre>[% USE file('/foo/bar.html') %]
[% file.name %]     # bar.html</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_dir" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">dir</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The directory element of the path with the filename removed.
                        </p>
                        <pre>[% USE file('/foo/bar.html') %]
[% file.name %]     # /foo</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_ext" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">ext</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The file extension, if any, appearing at the end of the path following a
                          '<code>.</code>' (not included in the extension).
                        </p>
                        <pre>[% USE file('/foo/bar.html') %]
[% file.ext %]      # html</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_home" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">home</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          This contains a string of the form '<code>../..</code>' to represent the
                          upward path from a file to its root directory.
                        </p>
                        <pre>[% USE file('bar.html') %]
[% file.home %]     # nothing

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

[% USE file('foo/bar/baz.html') %]
[% file.home %]     # ../..</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_root" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">root</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The <code>root</code> item can be specified as a constructor argument,
                          indicating a root directory in which the named file resides. This is
                          otherwise set empty.
                        </p>
                        <pre>[% USE file('foo/bar.html', root='/tmp') %]
[% file.root %]     # /tmp</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_abs" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">abs</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          This returns the absolute file path by constructing a path from the
                          <code>root</code> and <code>path</code> options.
                        </p>
                        <pre>[% USE file('foo/bar.html', root='/tmp') %]
[% file.path %]     # foo/bar.html
[% file.root %]     # /tmp
[% file.abs %]      # /tmp/foo/bar.html</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="method_rel" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">rel(path)</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          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
                          '<code>home</code>' item.
                        </p>
                        <pre>[% USE file('foo/bar/baz.html') %]
[% file.rel('wiz/waz.html') %]      # ../../wiz/waz.html</pre>
                  </div>
                </div>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="EXAMPLES" onclick="switch_section(this)" title="Click title to show/hide section content.">EXAMPLES</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <pre>[% 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</pre>
                    <pre>[% USE file('foo.html') %]

[% file.path %]           # foo.html
[% file.dir  %]       # ''
[% file.name %]           # foo.html
[% file.root %]       # ''
[% file.home %]       # ''
[% file.abs  %]       # foo.html</pre>
                    <pre>[% 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</pre>
                    <pre>[% 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</pre>
                    <pre># calculate other file paths relative to this file and its root
[% USE file('foo/bar/baz.html', root =&gt; '/tmp/tt2') %]

[% file.path('baz/qux.html') %]         # ../../baz/qux.html
[% file.dir('wiz/woz.html')  %]     # ../../wiz/woz.html</pre>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="AUTHORS" onclick="switch_section(this)" title="Click title to show/hide section content.">AUTHORS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Michael Stevens wrote the original <code>Directory</code> plugin on which
                      this is based. Andy Wardley split it into separate <code>File</code> and
                      <code>Directory</code> plugins, added some extra code and documentation
                      for <code>VIEW</code> support, and made a few other minor tweaks.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="COPYRIGHT" onclick="switch_section(this)" title="Click title to show/hide section content.">COPYRIGHT</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Copyright 2000-2007 Michael Stevens, Andy Wardley.
                    </p>
                    <p>
                      This module is free software; you can redistribute it and/or modify it
                      under the same terms as Perl itself.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="SEE_ALSO" onclick="switch_section(this)" title="Click title to show/hide section content.">SEE ALSO</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      <a href="../../../modules/Template/Plugin.html">Template::Plugin</a>, <a
                      href="../../../modules/Template/Plugin/Directory.html">Template::Plugin::Directory</a>, <a href="../../../modules/Template/View.html">Template::View</a>
                    </p>
              </div>
            </div>
            
            </div></div>
          <br class="clear" />
          <div class="pageinfo">
            /modules/Template/Plugin/File.html last modified 10:54:59 31-May-2007
          </div>
        </div>
        
        <div id="footer">
          <a href="http://opensource.org/" class="osi"></a>
          <div class="controls">
          <div class="pager">
            <a href="../../../modules/Template/Plugin/Dumper.html" title="Template::Plugin::Dumper" class="go back">Back<span class="about"><h4>Template::Plugin::Dumper</h4></span></a>
            <a href="../../../modules/Template/Plugin/index.html" title="Template::Plugin::* Modules" class="go up">Up<span class="about"><h4>Template::Plugin::* Modules</h4></span></a>
            <a href="../../../modules/Template/Plugin/Filter.html" title="Template::Plugin::Filter" class="go next">Next<span class="about"><h4>Template::Plugin::Filter</h4></span></a>
          </div>
          </div>
          <div class="copyright">
            Copyright &copy; 1996-2007 <a href="http://wardley.org/">Andy Wardley</a>.  All Rights Reserved.
          </div>
          <div class="licence">
            The <a href="http://template-toolkit.org/">Template Toolkit</a> is <a href="http://opensource.org/">Open Source</a> software.
            You can redistribute and/or modify it under the terms of the <a href="http://www.opensource.org/licenses/gpl-license.php">GNU Public Licence</a>
            or the <a href="http://www.opensource.org/licenses/artistic-license.php">Perl Artistic Licence</a>.
          </div>
        </div>
        <div id="palette">
          <ul>
            <li class="first"><a href="#" class="blue" onclick="set_style('Clear Blue')"></a></li>
            <li><a href="#" class="orange" onclick="set_style('Clear Orange')"></a></li>
            <li><a href="#" class="green" onclick="set_style('Clear Green')"></a></li>
            <li><a href="#" class="purple" onclick="set_style('Clear Purple')"></a></li>
            <li><a href="#" class="grey" onclick="set_style('Clear Grey')"></a></li>
          </ul>
        </div>
    </div>  </body>
</html>