Patch(3) User Contributed Perl Documentation Patch(3)

Text::Patch - Patches text with given patch

use Text::Patch;

$output = patch( $source, $diff, STYLE => "Unified" );

use Text::Diff;

$src  = ...
$dst  = ...

$diff = diff( \$src, \$dst, { STYLE => 'Unified' } );

$out  = patch( $src, $diff, { STYLE => 'Unified' } );

print "Patch successful" if $out eq $dst;

Text::Patch combines source text with given diff (difference) data. Diff data is produced by Text::Diff module or by the standard diff utility (man diff, see -u option).
patch( $source, $diff, options... )
First argument is source (original) text. Second is the diff data. Third argument can be either hash reference with options or all the rest arguments will be considered patch options:

$output = patch( $source, $diff, STYLE => "Unified", ... );

$output = patch( $source, $diff, { STYLE => "Unified", ... } );

Options are:

STYLE => 'Unified'

STYLE can be "Unified", "Context" or "OldStyle".

The 'Unified' diff format looks like this:

@@ -1,7 +1,6 @@
-The Way that can be told of is not the eternal Way;
-The name that can be named is not the eternal name.
 The Nameless is the origin of Heaven and Earth;
-The Named is the mother of all things.
+The named is the mother of all things.
 Therefore let there always be non-being,
   so we may see their subtlety,
 And let there always be being,
@@ -9,3 +8,6 @@
 The two are the same,
 But after they are produced,
   they have different names.
+They both may be called deep and profound.
+Deeper and more profound,
+The door of all subtleties!

Interfaces with files, arrays, etc.

Vladi Belperchinov-Shabanski "Cade"

<> <> <>

$Id:,v 1.6 2007/04/07 19:57:41 cade Exp $
2020-06-21 perl v5.32.0