#!/usr/bin/perl -w
use strict;
+
use Getopt::Declare;
# $Id: multiline_inplace_edit.pl,v 1.5 2003/08/07 00:44:02 adamm Exp $
our $VERSION = 0.01;
our $usage_spec = <<'UsageSpec';
[strict]
Edit files in-place using a single regex that will be applied to
the entire file as a string.
<regex> regex to be applied to files
[required]
<files>... one or more files to slurp in and run regex ag
+ainst
[required]
WARNING: the first argument is added to an eval block!
Example:
./edit.pl 's/your([\n\s]*?)friend/joe${1}${2}/ms' foo.txt
UsageSpec
our $args = new Getopt::Declare ($usage_spec) or die;
local $/;
for (@{$args->{'<files>'}}) {
open (FH, "< $_") or die "error opening $_ for reading: $!";
my $whole_file = <FH>;
my $matching_code = '{ $whole_file =~ ' . $args->{'<regex>'} . ' }';
eval $matching_code;
die $@ if $@;
close(FH) or die "error closing $!";
open (FH, "> $_") or die "error opening $_ for writing: $!";
print FH $whole_file;
close(FH) or warn "error closing $!";
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|