---
name: "File::Inplace"
section: "3pm"
platform: "linux"
package: "libfile-inplace-perl"
version: "0.20-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/File::Inplace"
---

# File::Inplace(3pm)

Perl module for in-place editing of files

## NAME

File::Inplace - Perl module for in-place editing of files

## SYNOPSIS

```
  use File::Inplace;
  my $editor = new File::Inplace(file => "file.txt");
  while (my ($line) = $editor->next_line) {
    $editor->replace_line(reverse $line);
  }
  $editor->commit;
```

## DESCRIPTION

File::Inplace is a perl module intended to ease the common task of editing a file in-place.  Inspired by variations of perl's -i option, this module is intended for somewhat more structured and reusable editing than command line perl typically allows.  File::Inplace endeavors to guarantee file integrity; that is, either all of the changes made will be saved to the file, or none will.  It also offers functionality such as backup creation, automatic field splitting per-line, automatic chomping/unchomping, and aborting edits partially through without affecting the original file.

## CONSTRUCTOR

File::Inplace offers one constructor that accepts a number of parameters, one of which is required.

- File::Inplace-\>new(file =\> "filename", ...)

  - file

    The one required parameter.  This is the name of the file to edit.

  - suffix

    The suffix for backup files.  If not specified, no backups are made.

  - chomp

    If set to zero, then automatic chomping will not be performed. Newlines (actually, the contents of $/) will remain in strings returned from `"next_line"`.  Additionally, the contents of $/ will not be appended when replacing lines.

  - regex

    If specified, then each line will be split by this parameter when using `"next_line_split"` method.  If unspecified, then this defaults to \\s+.

  - separator

    The default character used to join each line when replace\_line is invoked with a list instead of a single value.  Defaults to a single space.

## INSTANCE METHODS

- $editor-\>next\_line ()

  In scalar context, it returns the next line of the input file, or undef if there is no line.  In an array context, it returns a single value of the line, or an empty list if there is no line.

- $editor-\>replace\_line (value)

  Replaces the current line in the output file with the specified value. If passed a list, then each valie is joined by the `"separator"` specified at construction time.

- $editor-\>next\_line\_split ()

  Line `"next_line"`, except splits based on the `"regex"` specified in the constructor.

- $editor-\>has\_lines ()

  Returns true if the file contains any further lines.

- $editor-\>all\_lines ()

  Returns an array of all lines in the file being edited.

- $editor-\>replace\_all\_lines (@lines)

  Replaces **all** remaining lines in the file with the specified `@lines`.

- $editor-\>commit ()

  Completes the edit operation and saves the changes to the edited file.

- $editor-\>rollback ()

  Aborts the edit process.

- $editor-\>commit\_to\_backup ()

  Saves edits to the backup file instead of the original file.

## AUTHOR

Chip Turner, \<chipt@cpan.org\>

## COPYRIGHT AND LICENSE

Copyright (C) 2005 by Chip Turner

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6.0 or, at your option, any later version of Perl 5 you may have available.
