Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Extracting pattern from a file

by Ratazong (Monsignor)
on Apr 17, 2012 at 06:03 UTC ( #965439=note: print w/replies, xml ) Need Help??

in reply to Extracting pattern from a file

Hi gosh123,

Your problem can be solved quite easily. Please have a look at the following pseudocode:

my lastFoundTimescale = "undefined"; # declare a variable to hold the + last found value while(<>) # read the file line-by-line { if (line with timescale info found) store info to the variable lastFoundTimescale if (line with modulename found) process modulename and lastFoundTimescale }
HTH, Rata

Replies are listed 'Best First'.
Re^2: Extracting pattern from a file
by ghosh123 (Monk) on Apr 17, 2012 at 06:20 UTC

    Hi Ratazong, Thanks! I understand the pseudocode. But I need help in extracting the last found timescale value which is not commented out. And also to ignore any comments that appears next to the valid timescale value in the same line.

      So, what code have you written and how does it fail for your input data?

      A good place to start might be something like the following. You will have to modify the regular expression to detect comments and you will have to add other cases you want to detect.

      #!perl -w use strict; while (<DATA>) { s!\s+$!!; if( m!\btimescale\b! ) { print "Found timescale in [$_]\n"; } else { print "Ignored line [$_]\n"; }; }; __DATA__ =============================================== // 1st commented line //second commented line // timescale 1ns /5 ns timescale 1ns/4ns //this comment should also be ignored module modulename1 (a b c ) some lines.... some lines ... //third commented line //fourth commented line timescale 3ns/5ns module modulename2 (p q r) some lines ... //fifth comment //timescale 4ns/5ns timescale 1ns/3ns module modulename3 (m n p ) some line ... ================================================

      For dealing with the comments, I would just wipe out the comment part of each line immediately after reading it.
      You could do this either using the s/// operator (see the section Regexp Quote-Like Operators in perlop), or using index and substr. The former would be the more "perlish" solution. The latter might look more familiar to you if you come from a language such as C.

      Ronald Fischer <>

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://965439]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2018-06-21 18:43 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (118 votes). Check out past polls.