Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^5: Loop Array - If $var is something write values until $var is something else

by Marshall (Canon)
on Oct 03, 2018 at 22:08 UTC ( [id://1223495]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Loop Array - If $var is something write values until $var is something else
in thread Loop Array - If $var is something write values until $var is something else

I looked back over this thread. You seem to have a misunderstanding of what "unless" does. "unless X" means the same thing as "if not X". I recommend that you use this 2nd syntax because it is often easier for beginners to understand. This makes no difference (or at least not any significant difference) in the execution speed of the compiled code.

I've given other solutions as have others in this thread. You have an overly complex "if" code block. Your "else" layer is not needed. In this code version, there is something to be done with a JOB line, a SOMETHING line or a SOMETHING ELSE line. Otherwise the current line is printed with the current header prepended. Somewhere else in this thread I gave a solution where these sub-header tags were not fixed in advance but has the limitation that each sub-section must have exactly 4 lines of "other strings".

In general the better your specify the problem, the better the answers tend to be.

#!/usr/bin/perl use strict; use warnings; my $header =""; while (defined (my $line= <DATA>)) { next if $line =~ /^\s*$/; # skip blank lines chomp $line; if ($line =~ /^JOB::/) { print "$line\n"; } elsif ($line =~ /^Something\s*$|^Something Else\s*$/ ) { $header = $line; # don't print this line } else { print "$header $line\n"; #print line with current sub-header } } =PRINTS: JOB::HEREISASTRING Something StringA Something StringB Something StringC Something StringD Something Else StringE Something Else StringF Something Else StringG Something Else StringH JOB::HEREISANOTHERSTRING Something StringI Something StringJ Something StringK Something StringL Something Else StringM Something Else StringN Something Else StringO Something Else StringP =cut __DATA__ JOB::HEREISASTRING Something StringA StringB StringC StringD Something Else StringE StringF StringG StringH JOB::HEREISANOTHERSTRING Something StringI StringJ StringK StringL Something Else StringM StringN StringO StringP
  • Comment on Re^5: Loop Array - If $var is something write values until $var is something else
  • Download Code

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2024-04-19 10:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found