Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • > Do NOT use it on large files when doing multiple replacements of file contents, do copying of content instead.

    Given Tie::File's original purpose I'd say that what you describe above sounds almost like a bug. I say 'almost' since you didn't really explain what was the problem...

    • Ok, this is the script:

      #!/usr/bin/perl -w
      use strict;
      use Tie::File;
      my @array;
      tie @array, 'Tie::File', $ARGV[0] or die "Unable to tie file: $ARGV[0] - $!";
      foreach(@array) {
              print STDERR "Processing: $_\n";
              if (m/^<Seg L=/) {
                      print STDERR "Processe

      • by jhi (318) <> on 2004.08.16 3:49 (#33407) Homepage Journal
        Firstly, you could redo this
               if (m/^<Seg L=/) {
                        print STDERR "Processed: $_\n";
               s/^(<Seg L=.+>)"(.+)",\s*$/$1$2/ && print ...
        to replace one m and two s's with one s.

        Secondly, doing at least one STDERR print for every line, and two for matching lines, is probably not cheap.

        Thirdly, if you can do without those prints you could just use perl -pi.bak -e 's/.../.../'.

        Fourthly, there are also various parameters for Tie::File [] that could affect the result quite a bit, see e.g. the deferring [] options.

        Fifthly, it would still be nice to know why Tie::File is not fast enough. If you could profile this (e.g. with -d:DProf and dprofpp), that would be nice.

        • Thanks for the advice,

          I think I will attemp to time the various versions.

          I will profile the script aswell,

          Again thanks :)