Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: How do i extract 3 variables from each line in a file, and print them to a new file

by sapnac (Beadle)
on Jul 08, 2005 at 17:16 UTC ( #473501=note: print w/replies, xml ) Need Help??


in reply to Re: How do i extract 3 variables from each line in a file, and print them to a new file
in thread How do i extract 3 variables from each line in a file, and print them to a new file

Check this Data.dat contains the input lines. This is working. open(Spooler, "Data.dat") or die "File does not exists\n"; while($spooler=<Spooler>) { #print "$spooler\n"; chomp($spooler); @matches = $spooler =~ /(\d+)ms/g; foreach $a (@matches){ print $a .","; } print "\n"; } Hope it helps!
  • Comment on Re^2: How do i extract 3 variables from each line in a file, and print them to a new file
  • Download Code

Replies are listed 'Best First'.
Re^3: How do i extract 3 variables from each line in a file, and print them to a new file
by bofh_of_oz (Hermit) on Jul 08, 2005 at 17:59 UTC
    That would print a comma at the end of the output string, so you would need a way to prevent it, let's say, like this:

    for (@matches) { print "$_,"; } print "\b ";

    (Sorry about replacing foreach with for - someone mentioned to me earlier that it's faster and works the same way anyways)

    Personally, I prefer Transient's way of doing things... although I don't quite understand why it parses split first and then map...

    --------------------------------
    An idea is not responsible for the people who believe in it...

      good question.. hope I'm not overstepping my bounds by responding..(and I hope I'm right!)

      map { $_ =~ s/\D//g; $_ } split(':',(split(' ',$_))[-1]);
      is equivalent to
      my @split_results = split(':',(split(' ',$_))[-1]); map { $_ =~ s/\D//g; $_ } @split_results;
      because map BLOCK LIST has to run the BLOCK for each LIST element (setting each LIST value to $_), it must know what is in that LIST. Hence, the execution of the split(s) before the execution of the BLOCK (and therefore the map).
        Oh, I see. I guess it's the space between map{} and split that threw me off as i'm not used to using map yet :)

        Thanks for nice explanation as well. (I'll ++ you later as I've used up my votes for today already ;)

        --------------------------------
        An idea is not responsible for the people who believe in it...

      for is faster to type than foreach, and makes your program 3 bytes smaller, but apart from that, it has no effect.



      pbeckingham - typist, perishable vertebrate.
Re^3: How do i extract 3 variables from each line in a file, and print them to a new file
by bageler (Hermit) on Jul 08, 2005 at 19:43 UTC
    instead of
    @matches = $spooler =~ /(\d+)ms/g; foreach $a (@matches){ print $a .","; } print "\n";
    how about
    print join(',',$spooler=~/(\d+)ms/g)."\n";
Re^3: How do i extract 3 variables from each line in a file, and print them to a new file
by Anonymous Monk on Jul 08, 2005 at 17:50 UTC
    Thanks, that worked great:)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://473501]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2020-11-26 08:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?