D
Deepu
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
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