I think you should follow the advice given by McA above:
...you're using the backtick operator very often which creates a subprocess doing the shell command. This is expensive. You can do all the tasks directly in Perl reducing the amount of subprocess creations.
In particular, this line:
`perl -i -pe 's/[^[:ascii:]]//g; tr/\015//d' $abc1`;
creates a new shell subprocess with its own copy of the Perl interpreter on every loop iteration! Look at the answers already given by aitap and pvaldes, below, for advice on how to re-write your code in pure Perl, without using the backtick operator. There is no point in looking at other optimisations until you’ve removed the overhead of all those unnecessary shell subprocesses.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re^5: Faster replacement of sed commands
by Athanasius
in thread Faster replacement of sed commands..
by Ankur_kuls
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |