2007-10-05, 07:53
#1
my @lista = ("helt ointressant text som ska va kvar VALUE='100' LOTOL=83 HITOL=126");
my $lotolReplace = 90;
my $hitolReplace = 110;
foreach (@lista) {
if (/.*VALUE=.*LOTOL=(.*)HITOL=(.*)/) {
$_ =~ s/$1/$lotolReplace /;
$_ =~ s/$2/$hitolReplace /;
@lista[0] = $_;
}
}
print "@lista \n";
use strict; # Always strict!
use warnings; # Always warnings!
# Name of the file to edit
my $in_file_name = 'test.txt';
# Edited version is written to seperate file, with prefix edited_
my $out_file_name = 'edited_' . $in_file_name;
# Variable to keep track of the number of changes made
my $edited;
# Open file for reading
open my $FH_IN, '<', $in_file_name or die "Failed to open file : $!";
# Open file for writing
open my $FH_OUT, '>', $out_file_name or die "Failed to open file : $!";
# Define regular expression
my $regex = q{
(.*) # Everything on the row up to string VALUE, store in $1
VALUE=\' # VALUE='
(\d+) # One or more digits, store in $2
\' # '
\s+ # one or more spaces
LOTOL= # LOTOL=
(\d+) # One or more digits, store in $3
\s+ # One or more spaces
HITOL= # HITOL=
(\d+) # One or more digits, store in $4
(.*) # Everything afterwards, store in $5
};
while(<$FH_IN>) {
if(/$regex/gx) {
print $FH_OUT $1 . "VALUE='" . $2 . "' LOTOL=" . ($2 * 0.9) . " HITOL=" . ($2 * 1.1) . $5 . "\n";
$edited++;
}
}
close $FH_OUT;
print "Edited $edited rows\n";
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106