Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: write command failing

by cmora111 (Novice)
on May 09, 2018 at 01:35 UTC ( [id://1214248]=note: print w/replies, xml ) Need Help??


in reply to Re: write command failing
in thread write command failing

I modified printConfig and printList as follows and things are working now without the write format.
sub printList { my $self = shift; my $fh = shift; foreach my $struct (values %{$self->list}) { $type = $struct->type; $name = $struct->name; $action = $struct->hu; if ( $struct->type =~ /LIGHT|FAN|CAMERA|CHRISTMAS/ ) { printf($fh " %s %-22s %s\n", $struct->type, +$struct->name,$struct->hu); } if ( $struct->type =~ /ZONE/ ) { printf($fh "ZONE %-22s %s\n", $struct->na +me,$struct->hu); printf $fh " SECURITY %-22s %s\n", $struct->na +me,$struct->security; printf $fh " STATE %-22s %s\n", $struct->na +me,$struct->state; printf $fh " BATTERY %-22s %s\n", $struct->na +me,$struct->battery; &printList($struct,$fh); } if ( $struct->type =~ /GROUP/ ) { printf($fh " GROUP %-22s %s\n", $struct->na +me,$struct->hu); printf $fh " SECURITY %-22s %s\n", $struct->na +me,$struct->security; printf $fh " STATE %-22s %s\n", $struct->na +me,$struct->state; printf $fh " BATTERY %-22s %s\n", $struct->na +me,$struct->battery; &printList($struct,$fh); } if ( $struct->type =~ /AREA/ ) { printf($fh " AREA %-22s %s\n", $struct->na +me,$struct->hu); printf $fh " SECURITY %-22s %s\n", $struct->na +me,$struct->security; printf $fh " STATE %-22s %s\n", $struct->na +me,$struct->state; printf $fh " BATTERY %-22s %s\n", $struct->na +me,$struct->battery; &printList($struct,$fh); } } } sub printConfig { my $configfile = shift; my $house = shift; my $space = ""; open(my $fh, ">$configfile"); printf($fh "ZONE %-22s %s\n", $house->name,$house +->hu); printf $fh " SECURITY %-22s %s\n", $house->name,$house +->security; printf $fh " STATE %-22s %s\n", $house->name,$house +->state; printf $fh " BATTERY %-22s %s\n", $house->name,$house +->battery; &printList($house,$fh,$house->type); close($fh); }
The Config file now prints the way I wanted. I am sure there is a more compact way to do it though.
ZONE Master G1 SECURITY Master OFF STATE Master OFF BATTERY Master 20180410 ZONE Outdoor G2 SECURITY Outdoor OFF STATE Outdoor OFF BATTERY Outdoor 20180410 GROUP Frontdoor G5 SECURITY Frontdoor OFF STATE Frontdoor OFF BATTERY Frontdoor 20180410 GROUP Deck G6 SECURITY Deck OFF STATE Deck OFF BATTERY Deck 20180410 GROUP Basement G7 SECURITY Basement OFF STATE Basement OFF BATTERY Basement 20180410 ZONE Indoor G3 SECURITY Indoor OFF STATE Indoor OFF BATTERY Indoor 20180410 GROUP SecondFloor G10 SECURITY SecondFloor OFF STATE SecondFloor OFF BATTERY SecondFloor 20180410 GROUP FirstFloor G9 SECURITY FirstFloor OFF STATE FirstFloor OFF BATTERY FirstFloor 20180410 AREA Livingroom G14 SECURITY Livingroom OFF STATE Livingroom OFF BATTERY Livingroom 20180410 AREA EntryWay G13 SECURITY EntryWay OFF STATE EntryWay OFF BATTERY EntryWay 20180410 LIGHT Entryway Light N1 GROUP Basement G11 SECURITY Basement OFF STATE Basement OFF BATTERY Basement 20180410 GROUP Attic G8 SECURITY Attic OFF STATE Attic OFF BATTERY Attic 20180410 ZONE Garage G4 SECURITY Garage OFF STATE Garage OFF BATTERY Garage 20180410

Replies are listed 'Best First'.
Re^3: write command failing
by huck (Prior) on May 09, 2018 at 03:56 UTC

    my $f0="%-22s %s\n"; my $f1='%-22s' .$f0; my $f2=' %-18s' .$f0; my $f3=' %-14s' .$f0; my $f4=' %-10s' .$f0; sub printList { my $self = shift; my $fh = shift; foreach my $struct (sort values %{$self->list}) { my $type = $struct->type; if ( $type =~ /LIGHT|FAN|CAMERA|CHRISTMAS/ ) { printf $fh $f4, $type,$struct->name,$struct->hu; } else{ my ($ftop,$fline); if ( $type =~ /ZONE/ ) { $ftop=$f1; $fline=$f2;} if ( $type =~ /GROUP/ ) { $ftop=$f2; $fline=$f3;} if ( $type =~ /AREA/ ) { $ftop=$f3; $fline=$f4;} printSet($struct,$fh,$ftop,$fline); printList($struct,$fh); } } } sub printSet { my $struct=shift; my $fh=shift; my $ftop=shift; my $fline=shift; $name = $struct->name; printf $fh $ftop, $struct->type,$name,$struct->hu; for my $method (qw/security state battery/) { printf $fh $fline,uc($ +method),$name,$struct->$method; } } sub printConfig { my $configfile = shift; my $house = shift; my $space = ""; open(my $fh, ">$configfile"); printSet($house,$fh,$f1,$f2); printList($house,$fh,$house->type); close($fh); }
    Of most interest here is that "methods" are nothing but string literals.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1214248]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (5)
As of 2024-04-18 06:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found