PPI::Document::File(3) User Contributed Perl Documentation PPI::Document::File(3)

# [NAME](#NAME)

PPI::Document::File - A Perl Document located in a specific file

# [DESCRIPTION](#DESCRIPTION)

**WARNING: This class is experimental, and may change without notice**

**PPI::Document::File** provides a PPI::Document subclass that represents a Perl document stored in a specific named file.

# [METHODS](#METHODS)

## [new](#new)

```
  my $file = PPI::Document::File->new( 'Module.pm' );
```

The "new" constructor works the same as for the regular one, except that the only params allowed is a file name. You cannot create an "anonymous" PPI::Document::File object, not can you create an empty one.

Returns a new PPI::Document::File object, or "undef" on error.

## [save](#save)

```
  # Save to the file we were loaded from
  $file->save;
  
  # Save a copy to somewhere else
  $file->save( 'Module2.pm' );
```

The "save" method works similarly to the one in the parent PPI::Document class, saving a copy of the document to a file.

The difference with this subclass is that if "save" is not passed any filename, it will save it back to the file it was loaded from.

Note: When saving to a different file, it is considered to be saving a **copy** and so the value returned by the "filename" accessor will stay the same, and not change to the new filename.

# [TO DO](#TO_DO)

\- May need to overload some methods to forcefully prevent Document objects becoming children of another Node.

# [SUPPORT](#SUPPORT)

See the support section in the main module.

# [AUTHOR](#AUTHOR)

Adam Kennedy &lt;adamk@cpan.org&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright 2001 - 2011 Adam Kennedy.

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

The full text of the license can be found in the LICENSE file included with this module.

2026-10-25 perl v5.44.0

---

Document: PPI::Document::File(3pm) from perl-ppi 1.291-r2 (Chainguard OS)
Source: https://github.com/Perl-Critic/PPI
