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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl file, one line code include "length, rindex, substr", slow
# 1  
Old 06-08-2010
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  
Old 06-09-2010
What exactly are you trying to do here ?

tyler_durden
# 3  
Old 06-09-2010
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  
Old 06-09-2010
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 to Ask a Question

Previous Thread | Next Thread

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 ... (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
Login or Register to Ask a Question