замена старых цифр на новые после увеличения - PullRequest
1 голос
/ 29 февраля 2012

Q: Как добавить эту информацию $ sv?Замените старый на новый.

$ less stver.php

define('update_ver', 328);

$ less rec.pl

#!/usr/bin/perl
$sv="stver.php";
open (NUMECHO, "$sv") || die "Can't open $sv";
while (<NUMECHO>=~m/(\d+)/g)    #digits output
{
 chomp;
 #print "$1\n";
 $b=$1;
 $a=$b;
 ++$a;
}
close (NUMECHO);
print "Old value = $b\n";
print "New value = $a\n";

Когда я запускаю скрипт

$ ./rec.pl
Old value = 328
New value = 329

Все, что мне нужно, это заменить 328 на 329 в stver.php

Ответы [ 3 ]

2 голосов
/ 29 февраля 2012

это работает так, как вы ожидаете, добавляя 1 к номеру stver.php при каждом его выполнении:

rec.pl

#!/usr/bin/perl
$sv="stver.php";
open (NUMECHO, "<$sv") or die("Unable to open $sv");
open (TMP, "> $sv.tmp") or die("Unable to open $sv.tmp");
while(<NUMECHO>) {
    if(/(\d+)/) {
        m/(\d+)/g;
        $b = $1;
        $a = "$b" + "1";
        s/$b/$a/;
    }
    print TMP $_;
}
close(NUMECHO);
close(TMP);
rename "$sv.tmp", $sv;
print "Old value = $b\n";
print "New value = $a\n";
1 голос
/ 29 февраля 2012
perl -i.bak -pe's/define\('\''update_ver'\'', \K(\d+)(?=\);)/$1+1/e' stver.php
0 голосов
/ 29 февраля 2012
perl -i.bak -pe "s/define('update_ver', 328);/define('update_ver', 329);/" stver.php

У вас останется stver.php, содержащий необходимую информацию, и резервная копия с именем stver.php.bak, содержащая исходную информацию.

...