The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

subst - Greple module for text substitution

SYNOPSIS

greple -Msubst [ options ]

  --subst_file spec_file
  --subst_from string
  --subst_to   string

  --diff
  --diffcmd command
  --create
  --replace

DESCRIPTION

This greple module supports word substitution in text data.

Substitution can be indicated by option --subst_from and --subst_to, or specification file.

Next command replaces all string "FROM" to "TO".

  greple -Msubst --subst_from FROM --subst_to TO FROM

Of course, you should rather use sed in this case. Option --subst_from and --subst_to can be repeated, and substitution is done in order.

Using --subst_file option, you can prepare these substitution list in the file. Suppose the file cotains following data:

    Monday     Mon.
    Tuesday    The.
    Wednesday  Wed.
    Thursday   Thu.
    Friday     Fri.
    Saturday   Sat.
    Sunday     Sun.

Next command converts day-of-week name to abbreviation form.

    greple -Msubst --subst_file SPEC '\b[A-Z][a-z]+' ...

Field "//" in spec file is ignored, so this file can be written like this:

    Monday     //  Mon.
    Tuesday    //  The.
    Wednesday  //  Wed.
    Thursday   //  Thu.
    Friday     //  Fri.
    Saturday   //  Sat.
    Sunday     //  Sun.

You can use same file by greple's -f option and string after "//" is ignored as a comment in that case.

    greple -Msubst --subst_file SPEC -f SPEC ...

This is equivalent to search next pattern, and replace them. This is bad example, though.

    Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday   

Actually, it takes the second last field as a target, and the last field as a substitution string. All other fields are ignored. This behavior is useful when the pattern requires longer text than the string to be converted. See the next example:

    Black-\KMonday  // Monday  Friday

Pattern matches to string "Monday", but requires string "Black-" is preceeding to it. Substitution is done just for string "Monday", which does not match to the original pattern. As a matter of fact, look-ahead and look-behind pattern is removed automatically, next example works as expected.

    (?<=Black-)Monday  // Friday

Combining with greple's other options, it is possible to convert strings in the specific area of the target files.

--diff

Produce diff output of original and converted text.

--diffcmd command

Specify diff command name used by --diff option. Default is "diff -u".

--create

Create new file and write the result. Suffix ".new" is appended to original filename.

--replace

Replace the target file by converted result. Original file is renamed to backup name with ".bak" suffix.

BUGS

This module is made for Japanese text processing, and it is difficult to imagine the useful situation handling ascii.