in reply to extracting data from a line

Not totally sure what you're wanting from this... but if I'm reading correctly then this should work:

while (<DATA>) { /\/([^\/]+)\d$/; print $1."bot\n"; } __DATA__ ## /loc1/loc2/loc3/848xxxxxB01_d_1 ## /loc1/loc2/loc3/loc4/848xxxxxB01_d_1 ## /loc1/848xxxxxB01_d_1

Obviously here I'm replacing your input file with the __DATA__ block for ease of example and naturally you could change the print $1."bot\n"; to print MYOUTFILE $1."bot\n";.

--- Jay

All code is untested unless otherwise stated.

Replies are listed 'Best First'.
Re^2: extracting data from a line
by RCP (Acolyte) on Oct 27, 2004 at 14:19 UTC
    Thanks for your input Jay. Your code worked well with what
    I wanted to do. But...now came another glinch.
    What if the input file looked like this:
    c:/loc1/loc2/loc3/84xxxxxB01_e1_1

    When ran, the program output looked like this:
    84xxxxxB01e_bot
    when it should look like this
    84xxxxxB01_e1_bot

    Do I need to remove the first two characters first
    before running your "line" (/\/(^\/+)\d$/;) or
    is there a way to this with your one "line" of code?

    Bare with me as I don't get into programming with perl
    as much as I'd like, but I'm trying.

    Thanks..RCP

      I just ran that data line ( c:/loc1/loc2/loc3/84xxxxxB01_e1_1) through the above code and got 84xxxxxB01_e1_bot as expected, so I'm not sure why it didn't work for you.

      while (<DATA>) { /\/([^\/]+)\d$/; print $1."bot\n"; } __DATA__ c:/loc1/loc2/loc3/84xxxxxB01_e1_1

      --- Jay

      All code is untested unless otherwise stated.
      All opinions expressed are my own and are intended as guidance, not gospel; please treat what I say as such and as Abigail said Think for yourself.
      If in doubt ask.

        UPDATE: Before anyone could reply, I had managed
        to figure this out on my own! I was able
        to extract words between two key words and
        get the last word in a line (reverse) to
        form a new sentence.

        RCP

        Took awhile to get back to Jay..but it did work the second
        time around....Thanks again.
        I have a similar extraction request but with a twist,
        as I'm trying to extract data between any two key words,
        using a keyword to find a particular sentence.

        Data: (contains several lines of data)
        Board Name: just a test run Department: my1234
        open (FILEH, "/tmp/aform"); while (<FILEH>) { chomp; open(MYOUTFILE, ">>/tmp/new_form"); if ( /Department/ ) { $bname =~ /^Board Name:(.+)Department/; print MYOUTFILE "$bname'\n"; } close(FILEH); close(MYOUTFILE);
        I'm trying to get it to output only "just a test run"
        to a file, but all I get is an error. How can I
        also extract only the last word (my1234) from the same line?
        error message I got...
        Use of uninitialized value in pattern match (m//)
        Use of uninitialized value in concatenation (.) or string
        Thanks... RCP