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>