1

列 0、1、および 2 にデータを含むファイルを作成しました。これで、ファイルの列 3 に追加したい 11 個の値が関連付けられた $percentage という新しい変数ができました。

ファイルの末尾に追加せずにこれを行うにはどうすればよいですか?

現在、私のデータは次のように見えますが、既存のデータの横にフォーマットしたいと思います:

title name number 
title name number 
title name number 
title name number 
                  $percentage value 1
                  $percentage value 2
                  $percentage value 3
                  $percentage value 4

4

2 に答える 2

3

Tie::Fileを使用します。

#! /usr/bin/env perl
use common::sense;
use Tie::File;

tie my @f, 'Tie::File', 'foo' or die $!;

my $n;
for (@f) {
  $_ .= ' $percentage value ' . $n++;
}

untie @f;

例:

$ cat foo
title name number
title name number
title name number
title name number
$ perl tie-ex 
$ cat foo
title name number $percentage value 0
title name number $percentage value 1
title name number $percentage value 2
title name number $percentage value 3
于 2013-05-10T02:58:51.497 に答える
3

これがあなたのやりたいことだと思います...

use warnings;
use strict;

use File::Copy;

my $target_file = "testfile";
my $tmp_file = "$target_file.new";
my $str = "some string with stuff";

open my $fh, "<", "testfile";
open my $w_fh, ">>", "testfile.new";

# loop over your current file, one line at a time
while( my $line = <$fh> ){
    # remove the '\n' so we can add to the existing line
    chomp $line;
    # add what you'd like, plus the '\n'
    my $full_line = "$line $str\n";
    # and print this to a tmp file
    print $w_fh $full_line;
}
close $fh;
close $w_fh;

unlink $target_file or die "unable to delete $target_file: $!";
# use the File::Copy sub 'move'
# to rename the tmp file to the original name
move($tmp_file, $target_file);

コードの実行:

$ cat testfile
this is three
this is three
this is three
$ test.pl
$ cat testfile
this is three some string with stuff
this is three some string with stuff
this is three some string with stuff
于 2013-05-09T17:08:15.820 に答える