On Tuesday 01 April 2003 20:47, you wrote:

Alright...well first of all I hope this is just pseudocode. �Because a lot of 
it won't work at all.

Follow along...

| All,
|
|
|
| What I need is that if I was parsing some data and there is no value
| (spaces) it should print ***** so that the next thing I will print after
| it would not be printed out immediately.
|
|
|
| Ex. of output I want
|
|
|
| VISUALID � � � � �XXXX
|
| 123456 � � � � � � �1023
|
| 123457 � � � � � � �1354
|
| **** � � � � � � � � � 1789
|
| This is what happens if no value is found
|
| VISUALID � � � � �XXXX
|
| 1789
|
|
|
| SCRIPT as follows:
|
| while ($_=<SUMM>) { � ##file is open###

This statement is redundant. �Saying:

while ( <SUMM> ) 

is sufficient. �Each line in <SUMM> will automatically be assigned to $_ as 
long as $/ isn't changed.

|
| {
|
| � � if (/_visualid_(.*)/) {

This regular expression won't work with the data you provided.

|
| � � � � � � � � {
|
| � � � � � � � � if ($length < 2); � � � � � � � � � � � � { � ##what im
| doing is that if the string length is less than 2 print ***)

You're not assigning $length anywhere. �Now, $length is interesting because 
is seems like what you really want is not to count bytes but you want to 
count how many words there are on a line. �This could be accomplished with a 
regular expression such as:

$numwords = (() = $line =~ /(.*?) /g) + 1;

You could also use substr().

<example>
perl -e '
$line = "this is a line of words that has hmmm\n";
chomp($line);
$numwords = (() = $line =~ /(.*?) /g) + 1; # count starts at 0
print "$line == $numwords words\n";
'
this is a line of words that has hmmm == 9 words
</example>


|
| � � � � � � � � print "***\t";
|
| � � � � � � � � }
|
| � � � � � � � �else {
|
| � � � � � � � � print "$1\t";}
|

Again, I am assuming this is pseudocode but for completeness sake $1 isn't 
assigned. �I guess $1 would be the return from the regex you used above.

| � � � � � � }}
|
|
|
| � � if (/_xxxx_(.*)/) {

Im not exactly sure why you keep using '_'s in your regexes.

|
| � � � � � � print "\t$1_";
|
| � � }
|
|
|
|
|
| thanks,
|
| Nix


Here is some code that I would have written to do what you are asking for...

[EMAIL PROTECTED] ~]$ cat pb;perl pb
open(F,"h") or die();

for ( <F> )
{
� � chomp();
� � $numwords = (() = $_ =~ /(.*?)\s+/g) + 1;

� � if ( /visualid/i )
� � {
� � � � print "$_\t � �XXXX\n";
� � � � next;
� � }

� � if ( $numwords < 2 )
� � {
� � � � print "****\t\t � �$_\n";
� � } 
� � else
� � {
� � � � print $_,"\n";
� � }
}
VISUALID � � � � � �XXXX
123456 � � � � � � �1023
123457 � � � � � � �1354
**** � � � � � � � �1789

-- 

- Jim

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to