perl file, one line code include "length, rindex, substr", slow


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
perl file, one line code include "length, rindex, substr", slow

Hi Everyone,

Code:
[root@]# cat a.txt
a;b;c;64O
a;b;c;d;ee;f

[root@]# cat a.pl
#!/usr/bin/perl
use strict;
use warnings;

my $tmp3 = ",,a,,b,,c,,d,,e,,f,,";
open(my $FA, "a.txt") or die "$!";
while(<$FA>) {
        chomp;
        my @tmp=split(/\;/, $_);
        if ( ($tmp[3] =~ m/^(64O)/i) || ($tmp[4] =~ m/^(64O)/i) || ((!$tmp[3]) && (!$tmp[4])) ) {
                #print $_;
        } else {
                if ( ((length($tmp[3]) == 1) && (length($tmp[4]) > 1) && (rindex($tmp3, ",,".substr($tmp[3],0,length($tmp[3])).",,") != -1)) ) {
                        print "$tmp[0];$tmp[1];$tmp[2];$tmp[3];$tmp[4]";
                }
        }
}
[root@]#

[root@]# ./a.pl
a;b;c;d;ee
[root@]#

this a.txt in real word is having lots of lines, i find the line with "length, rindex, substr" this if code, runs very slow. any better way to improve it?

Thanks
# 2  
What exactly are you trying to do here ?

tyler_durden
# 3  
Sorry for the information not giving clearly.

case 1:
for this code:
Code:
if ( ($tmp[3] =~ m/^(64O)/i) || ($tmp[4] =~ m/^(64O)/i) || ((!$tmp[3]) && (!$tmp[4])) ) {
}

whether can simplify it? like we can combine it to $tmp[3]|$tmp[4] =~ m/^(64O)/i), and (!$tmp[3]) && (!$tmp[4])) to (!$tmp[3]|$tmp[4]) ?

case 2:
Code:
my $test="c";
rindex(",,a,,b,,c,,", ",,".substr($test,0,length($test)).",,") != -1

if any simply way to do that, instead of rindex, substr.

Thanks
# 4  
It's still not clear enough.

Ok, let's do this - you have this file:

Code:
[root@]# cat a.txt
a;b;c;64O
a;b;c;d;ee;f

Just describe, in simple, plain English, what you want to do with this file.

Keep that Perl code aside for a moment.

tyler_durden
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

3. Shell Programming and Scripting

Filter file by length, looking only at lines that don't begin with ">"

I have a file that stores data in pairs of lines, following this format: line 1: header (preceded by ">") line 2: sequence Example.txt: >seq1 name GATTGATGTTTGAGTTTTGGTTTTT >seq2 name TTTTCTTC I want to filter out the sequences and corresponding headers for all sequences that are less... (2 Replies)
Discussion started by: pathunkathunk
2 Replies

4. Emergency UNIX and Linux Support

Accidentally Changed File Ownership to Include a "Comment" [AIX]

Hi. I've had a little mishap. To cut a long story short, I've accidentally recursively ran chown on a directory (actually a bunch of 'em). Not a problem in itself, but I had a slight error in the code I used to get the list of directories and ended up with a comment in the file ownership. ... (15 Replies)
Discussion started by: Scott
15 Replies

5. Shell Programming and Scripting

Need to include " , " between two parameter in perl

i have two files t4.txt para1 para2 t5.txt 34 56 after compiling the following in perl system("paste t4.txt t5.txt > table.txt"); i am getting o/p as para1 34 para2 56 but i need o/p as para1,34 para2,56 (3 Replies)
Discussion started by: roopa
3 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

Compare file names and select correct elements to include in "for each loop"

Hi everyone, I`ll try to be most clear I can explaining my help request. I have 2 folders Folder A-->This folder receives files through FTP constantly Folder B-->The files from Folder A are unzipped and then processed in Folder B Sometimes Folder A doesn`t contain all... (2 Replies)
Discussion started by: cgkmal
2 Replies

8. Shell Programming and Scripting

how to include slashes "/" in @ARGV (Perl)

Hello I have simple script that will accept as arg string like this : "…/foo/blah/,…/…/foo1/,…/blah" now perl automatically removes the slashes "/" , I can't escape the slashes in the input I have to control on it so how can I force perl to not touch this slashes? Thanks allot (5 Replies)
Discussion started by: umen
5 Replies

9. Shell Programming and Scripting

Break line after last "/" if length > X characters

Hello. I am a french newbie in unix shell scripting (sorry if my english speaking is wrong). I have a file with path and filenames in it. I want to limit the number of characters on each line and break the line if necessary. But the "break" should occur after a slash caracter "/". Example of... (9 Replies)
Discussion started by: SportBilly
9 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

Featured Tech Videos