in reply to Re: Replace text in file
in thread Replace text in file

Yes, that could be used, but the problem I see with substr here is that we cannot be sure whether the version number has one or two or several digits, so you need further processing for determining that. To me, a regex substitution is simpler in this context.

Replies are listed 'Best First'.
Re^3: Replace text in file
by kcott (Archbishop) on Apr 18, 2014 at 01:56 UTC

    While I probably wouldn't use substr for this, I don't really see the number of (before or after) digits as being a problem. Here's a (multi-line) one-liner to explain:

    $ perl -Mstrict -Mwarnings -E ' my $find = q{#define MYVERSION }; my $flen = length $find; my @strings = ( q{#define MYVERSION 11}, q{#define MYVERSION 9}, q{#define MYVERSION 99} ); for (@strings) { say; substr($_, $flen) = substr($_, $flen) + 1; say; } ' #define MYVERSION 11 #define MYVERSION 12 #define MYVERSION 9 #define MYVERSION 10 #define MYVERSION 99 #define MYVERSION 100

    Anyway, that's all fairly academic: I'm pretty sure I would have reached for something like s/^($find)(\d+)/$1.($2+1)/e in the first instance.

    -- Ken

Re^3: Replace text in file
by Yaerox (Scribe) on Apr 17, 2014 at 11:30 UTC

    "we cannot be sure whether the version number has one or two or several digits"

    Totally agree with you on that point.

    Regards