Perl Pattern Matching:Unix Vs. Window (Is it OS dependent??)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Pattern Matching:Unix Vs. Window (Is it OS dependent??)
# 1  
Old 04-13-2009
Perl Pattern Matching:Unix Vs. Window (Is it OS dependent??)

Hi All,

Below I am discussing the problem I am facing while using pattern matching in Unix & Window. Plz hv a look into it.
================
my $s="UPDATE A
SET s="klkkk'
;" ;

if ( $s =~ m/^[ ]*UPDATE[ ]+/i )
{
print $s;
}
else
{ print "no match";}
===================

Both should be working as same and you can see it works also.
But I found pattern matching sometimes behaves differently while copying or transfering the data from window to unix and vice-versa.
Smilie
So main problem is may be due to transfering ...
But since we can't avoid that can we make some change in our script so that it will work same in any platform.

May be some some hidden character is creating the probelm.
Have you faced the samething???

Please reply and also suggest to avoid such problem.
# 2  
Old 04-13-2009
you can use unix2dos
# 3  
Old 04-13-2009
unix2dos is used for converting unix format to dos format. Here we can identify that by seeing the line break(^M).

But in my case it is not showing any special character in UNIX os. Just the matching is failing... Yes here I am running in Unix machine.

Last edited by Niroj; 04-13-2009 at 06:22 AM..
# 4  
Old 04-13-2009
i mean do a unix2dos (or an editor in windows that can convert files from unix to dos) on your script. then run the script again
# 5  
Old 04-13-2009
Yea, could be that the windows line ending \r\n is interferring with the match when the windows file is searched using a perl script on a Unix machine, which will think line endings are only \n.
# 6  
Old 04-13-2009
IF I read it correctly, you have embedded a newline in the quoted string. If you copy the script to Windows, you will have to re-edit the file on Windows to include \r

For portability:
In other words, you need two versions of the string, one with ^M, one without ^M, if you want portable code. Then your code has to figure out which one to employ in the search.
# 7  
Old 04-14-2009
Thanks KevinADC & jim mcnamara !

Actually I am reading a dbscript file which contains the SQL statements like "SELECT emp_id FROM EMPLOYEE......;" , " UPDATE ..........;" etc including the other comments & unrelated things. I want to get get those queries using pattern matching.

like:
$count= 0;
while ( my $line = <FH0>)
{

if ($line =~ m/^[ ]*UPDATE[ ]+/i)
{
print "UPDATE----line no.= $line_no:\n----\n\n$line\n";
$line_no=$count++;
}

}

=======

In the above script I m checking the lines those are starting with the SQL keywords. Though it is working with the other lines correctly but failing for some lines like
"UPDATE ABCD....". (all I checked in UNIX os)

When I coping the exact query in Window os & tested this it failing again. But strange thing is that when I am writing the same thing with out copying, then pattern matching is successful both in unix and window.

So, I concluded that may be there is some problem while reading the file where I am searching the sql statements by pattern matching. May be some corrupt or invisible characters.

Did u get me? Why it is happening...? Anyway to avoid such things..?Smilie

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl - Use of *? in Matching Pattern

I am using Perl version 5.8.4 and trying to understand the use of regular expression. Following is my code and output. $string = "Perl is a\nScripting language"; ($start) = ($string =~ /\A(.*?) /); @lines = ($string =~ /^(.*?) /gm); print "First Word (using \\A): $start\n","Line... (4 Replies)
Discussion started by: jnrohit2k
4 Replies

2. Shell Programming and Scripting

Pattern matching in Perl

Hi, I have a list of IP, eg : 192.168.0.15 192.168.0.24 192.168.2.110 192.168.2.200 And I would like the shortest pattern who match with '192.168.0' and '192.168.2' (without the last dot and number). (7 Replies)
Discussion started by: X-Or
7 Replies

3. Shell Programming and Scripting

Need help with perl pattern matching

My log file looks as given below, its actually a huge file around 1 GB and these are some of the line: conn=5368758 op=10628050 msgId=64 - RESULT err=0 tag=101 nentries=1 etime=0 conn=7462122 op=-1 msgId=-1 - fd=247 slot=247 LDAPS connection from 10.13.18.12:37645 to 10.18.6.45 conn=7462122... (5 Replies)
Discussion started by: sags007_99
5 Replies

4. Shell Programming and Scripting

Pattern Matching in PERL

I have a 2 files in .gz format and it consists of 5 million lines the format of the file would be gzcat file1.gz | more abcde aerere ffgh56 .. .. 12345 gzcat file2.gz | more abcde , 12345 , 67890, ffgh56 , 45623 ,12334 whatever the string is in the file1 should be matched... (3 Replies)
Discussion started by: aravindj80
3 Replies

5. Shell Programming and Scripting

Perl Pattern matching...

I am doing a file patterhn matching for a text file in PERL I am using this,,, but it says that no file is found $filepattern = '\d{1,4}.*A0NW9693.NDM.HBIDT.*.AD34XADJ.txt'; Can anyone help me out with Perl Pattern Matching concepts and how to do pattern matching for this txt file:... (4 Replies)
Discussion started by: msrahman
4 Replies

6. Shell Programming and Scripting

Perl pattern matching!!

Hi experts, I have many occurances of the following headers in a file. I need to grep for the word changed/inserted in the header, calculate the difference between the two numbers and list the count incrementally. Headers in a file look like this: ------------------- ---------------------... (6 Replies)
Discussion started by: nmattam
6 Replies

7. Shell Programming and Scripting

Perl Pattern Matching

Hello experts, I have a file containing the following text(shortened here). File Begin ---------- < # Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 < Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 --- > # Billboard.d3fc1302a677.imagePath=S:\\efcm_Cassini >... (2 Replies)
Discussion started by: nmattam
2 Replies

8. Shell Programming and Scripting

Perl -Pattern Matching help..!

Hi, I got doubt in Pattern matching, could you tell me how the following differs in action ?? if ( $line1==/$line2/ ) if ( $line1=~/$line2/ ) if ( $line1=~m/$line2/) What is the significance of '~' in matching. Thanks in advance CoolBhai (5 Replies)
Discussion started by: coolbhai
5 Replies

9. Shell Programming and Scripting

Perl Pattern Matching !!! Help

Hello I got the below one from in one of this forums For Ex: Loading File System Networking in nature now i need to extract the patterns between the words File and Networking : i.e. sample output: System cmd used : cat <file> | sed 's/.*File //' | sed 's/Closing.*$//' Actually... (0 Replies)
Discussion started by: maxmave
0 Replies

10. Shell Programming and Scripting

perl pattern matching

hi i am trying to get digits inside brackes from file , whose structure is defined below CREATE TABLE TELM (SOC_NO CHAR (3) NOT NULL, TXN_AMOUNT NUMBER (17,3) SIGN_ON_TIME CHAR (8) TELLER_APP_LIMIT NUMBER (17,3) FIL01 ... (2 Replies)
Discussion started by: zedex
2 Replies
Login or Register to Ask a Question