> -----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]

Reply via email to