Kevin, Would something like this work for you?
Main program: ----------------------------------------- use strict; my $data_time = 'date'; my $TACH = 'tach345'; my $MP = 'mp123'; our @array; require 'config.pl'; foreach (@array) { eval 'print $' . $_ . ' . "\t"'; } print "\n"; ----------------------------------------- config.pl contains the following our @array = ('data_time', 'MP', 'TACH'); On Wed, 2 Feb 2005 10:34:35 -0800, Wagner, David --- Senior Programmer Analyst --- WGO <[EMAIL PROTECTED]> wrote: > On 2-Feb-05, at 1:09 PM, Wagner, David --- Senior Programmer Analyst > --- WGO wrote: > > > Kevin Horton wrote: > >> I'm a perl newbie working on a script to log data from a device that > >> sends more variables than I need to log. I have a working prototype > >> script, with the list of variables to be logged hard-coded, which > >> means I need to edit the script any time I need to change the items > >> to be printed. > >> > >> Now I want to extend the script to use a configuration file to define > >> the list of variables to be logged, and the order to write them to the > >> log file. I've been messing around with this for many hours, and I've > >> dug through the various perl man pages, plus Perl in a Nutshell, and > >> Programming Perl, but I'm not making any progress. > >> > >> My working prototype script with the hard-coded list of variables > >> prints output with the following line: > >> > >> print OUTPUT > >> "$data_time\t$TACH\t$MP\t$FUEL_FLOW\t$QTY\t$CHT1\t$CHT2\t$CHT3\t$CHT4\ >> > >> t$ > >> EGT1\t$EGT2\t$EGT3\t$EGT4\t$OILT\t$OILP\t$VOLT\t$OAT\t$UNIT_TEMP\n"; > >> > >> I've got a config file that I read to create an array of variable > >> names that should be logged. The first few items in @variable_list > >> are: > >> > >> data_time > >> TACH > >> MP > >> FUEL_FLOW > >> > >> I would greatly appreciate any hints on how I can use the data in > >> @variable_list to print just the variables I want. > > > > Kevin, I would change it to a hash and then either use some type of > > regex against the keys to get what you want to print out or bypass. > > > But, I also need to control the order the variables are printed. I > understood that if you access the keys in a hash the order you get them > is random. I guess I could create a hash with just the variables I > want, with the keys being numbers. I could then pull the variable for > each key in order. But, I still don't understand the syntax I need. > I.e. once I pull a variable name out of the hash, how do I print that > variable? I tried messing around with symbolic references, but I > couldn't get them to work. > > Thanks, > > Kevin > > Then you sort the keys or make the hash a little more dynamic. You could do > something like: > > $hash{key1}[0] = 1; # how the data came in > $hash{key1}[1] = 'value of key1'; > $hash{key2}[0] = 2; > $hash{key2}[1] = 'value of key2'; > > # > # Alpha sort on the keys of hash > # > foreach my $MyKey (sort keys %hash) { > # now print or whatever > } > > # > # numeric sort off the first element of hash > # > foreach my $MyKey ( sort {$hash{$a}[0] <=> $hash{$a}[0]} keys %hash) { > # prints in numeric order > } > > I believe there are even modules which will help keep the order, but > seems like overkill to me. > > Wags ;) > > > ******************************************************* > This message contains information that is confidential > and proprietary to FedEx Freight or its affiliates. > It is intended only for the recipient named and for > the express purpose(s) described therein. > Any other use is prohibited. > ******************************************************* > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>