RE: changing multiple flags and changing them back

2002-08-01 Thread Shishir K. Singh

I have a series of flags that I need to change all at once, and then
change back, and was wondering if I could use an array or hash to do
this.

I am parsing an RTF file, and when I find a footnote, I need to preserve
the flags of the non-footnote text. So if I was in a table, I need to
save the $in_table flag. Then when I am done with the footnote text, I
need to re-set the $in_table flag to its previous state. 

So far I have this:

sub start_footnote{
   $previous_in_table = $in_table;
...
}

sub end_footnone{
   $in_table = $previous_in_table;
   ...
}

This works find except I might have 15 or 20 flags I need to set or
re-set. I would like to use an array like this:

@flags = ($in_table, $after_cell, $in_paragraph);

When I finish with my footnote, I will have an array of the previous
values. Now how do I assign these values to the variables?

Perhaps a hash would be a good idea where you can store it as 
while parsing

$flags{$new_flags} = $old_flags; 

After the parse, you know the new value, hence lookup the old value based  on the new 
value and 
reset the flags. 


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




RE: changing multiple flags and changing them back

2002-08-01 Thread Bob Showalter

 -Original Message-
 From: Paul Tremblay [mailto:[EMAIL PROTECTED]]
 Sent: Thursday, August 01, 2002 12:17 PM
 To: [EMAIL PROTECTED]
 Subject: changing multiple flags and changing them back
 
 
 I have a series of flags that I need to change all at once, and then
 change back, and was wondering if I could use an array or hash to do
 this.
 
 I am parsing an RTF file, and when I find a footnote, I need 
 to preserve
 the flags of the non-footnote text. So if I was in a table, I need to
 save the $in_table flag. Then when I am done with the footnote text, I
 need to re-set the $in_table flag to its previous state. 
 
 So far I have this:
 
 sub start_footnote{
   $previous_in_table = $in_table;
   ...
 }
 
 sub end_footnone{
   $in_table = $previous_in_table;
   ...
 }
 
 This works find except I might have 15 or 20 flags I need to set or
 re-set. I would like to use an array like this:
 
 @flags = ($in_table, $after_cell, $in_paragraph);
 
 When I finish with my footnote, I will have an array of the previous
 values. Now how do I assign these values to the variables?

Just reverse the assignment:

   ($in_table, $after_cell, $in_paragraph) = @flags;

You might also consider using a simple stack:

   my @stack;

   sub start_footnote
   {
  push @stack, [ $in_table, $after_cell, $in_paragraph ];
  ...
   }

   sub end_footnote
   {
  ($in_table, $after_cell, $in_paragraph) = @{ pop @stack };
  ...
   }

This will support multiple levels, if that is required (i.e. footnote
within a footnote).

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