Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > undef in Hash of Arrays

Reply
Thread Tools

undef in Hash of Arrays

 
 
Deepu
Guest
Posts: n/a
 
      06-25-2006
Hi All,

I have a file which have transitions like:

STATE1
STATE3
STATEMAIN ####
STATESUSPEND
STATE1
STATE2
STATERESUME
RESET
STATE6
STATE8
STATEMAIN ####
STATE9
STATE10

This indicates a transition from STATE1 to STATE3, then STATE3 to
STATEMAIN and so on. There are also 10 files which will have different
combinations of these states.

Here i need to go through the file and check for STATEMAIN and when i
see STATEMAIN, then i need to put it in an array till i see RESET or
end of file. After that again i need to proceed further to check
whether there is any more STATEMAIN. If present again i need to put it
in a different array till RESET or end of file.

Code:

use strict;
use Data:umper;

my @files = qw/FILE1 FILE2/;

my %transitions;
my %hashsuspend

foreach my $filename (@files)
{
my $fh;
open $fh, $filename
or do {
warn "$filename missing";
next;
};

my $run_through = 0;
my $recording_enabled = 0;
while (<$fh>)
{
if (/^RESET\b/)
{
$recording_enabled = 0;
}
elsif (/^STATEMAIN\b/)
{
$run_through++;
$recording_enabled = 1;
$suspendCount =0;
}
elsif ($recording_enabled)
{
push @{$transitions{$filename}[$run_through]}, $_;
if ($_ =~ /^STATESUSPEND/)
{
$suspendCount++;
$hashsuspend{$filename}[$run_through] = $suspendCount;
next;
}
}
}
close $fh or die $!;

}

print Dumper \%transitions;
print Dumper \%hashsuspend;

The output i am getting with this is:

%transitions = (
FILE1 => [
undef,
[
STATESUSPEND
STATERESUME
STATE1
STATE2
],
and so on.

What is the reason for undef at the start of the array in every
file.This undef appears even with hashsuspend. Please help me on this.

Thanks
-- Deep

 
Reply With Quote
 
 
 
 
Anno Siegel
Guest
Posts: n/a
 
      06-25-2006
Deepu <(E-Mail Removed)> wrote in comp.lang.perl.misc:
>Hi All,
>
>I have a file which have transitions like:
>
>STATE1
>STATE3
>STATEMAIN ####


We've been through this, haven't we, under the subject "Hash of Arrays".
What happened to the useful advice you got in that thread? John W. Krahn
offered a wonderful solution in essentialy 4 lines, among other things.

Anno
 
Reply With Quote
 
 
 
 
mgarrish@gmail.com
Guest
Posts: n/a
 
      06-25-2006

Deepu wrote:
>
> my $run_through = 0;


> while (<$fh>)
> {


> elsif (/^STATEMAIN\b/)
> {
> $run_through++;
> $recording_enabled = 1;


> }
> elsif ($recording_enabled)
> {
> push @{$transitions{$filename}[$run_through]}, $_;



>
> The output i am getting with this is:
>
> %transitions = (
> FILE1 => [
> undef,
> [


>
> What is the reason for undef at the start of the array in every
> file.This undef appears even with hashsuspend. Please help me on this.
>


How about looking at your code above bearing in mind that arrays start
at 0 not 1.

Matt

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
hash of hash of hash of hash in c++ rp C++ 1 11-10-2011 04:45 PM
undef($foo) versus $foo = undef()? Tim McDaniel Perl Misc 6 08-19-2009 08:31 AM
Hash of Hash of Arrays Question Älphä Blüë Ruby 5 07-18-2009 07:36 PM
Multidimensional arrays and arrays of arrays Philipp Java 21 01-20-2009 08:33 AM
hash of arrays - appending to one of the arrays Adam Akhtar Ruby 5 03-25-2008 11:53 PM



Advertisments