Ok guys, SomeHow I got lost in this mess, and I think I might need more help. The values inside my switch are not properly calculated , and when I try to round down it go's into the default statment. Can you please look what I cam up with again and see where I am going wrong.
#!/usr/bin/perl -w use POSIX; $CYLLENGTH=16065; open (PW_FH,"| fdisk -f -") || die " cant popn fdisk "; sleep(1); print "enter partition : "; chomp ( $P_num=<> ); print "enter partition type [165 BSD] : "; chomp ( $P_type=<> ); print "enter partition start cylender : "; chomp ( $P_start=<> ); print "enter partition length [cylenders]: "; chomp ( $P_length=<> ); while( ( $Remainder = ($P_length%$CYLLENGTH) ) != 0 ){ print "\asize you gave is not multiple of cylenders\n"; print "round (U)p (D)own (R)enter ?"; chomp ($Ans=<>); for ($Ans){ /u/i && do { $P_length -= $Remainder += $CYLLENGTH } && last; /d/i && do{ $P_lenght -= $Remainder } && last; #default print "enter partition length : " ; chomp ($P_lenght=<>) ; last; } } print " $P_length is the value \n"; _exit 0; # take this out once fixed print PW_FH "p $P_num $P_type $P_start $P_lenght"; close PW_FH; _exit 0; Thanx in advance, Mark ----- Original Message ----- From: "Hanson, Rob" <[EMAIL PROTECTED]> To: "'Mark Goland'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Friday, October 11, 2002 3:34 PM Subject: RE: switch > Ooops, I think I misunderstood the question in my last post. That will > teach me to read the whole post first! > > Anyway... > > What does that $where in your code come from? It is in the for() statement. > Shouldn't it be $Ans? > > I would do it more like this... > > print "Enter the command: "; > chomp(my $input = <STDIN>); > > for ($input) { > /u/i and print "u\n" and last; > /d/i and print "d\n" and last; > > # default > print "default\n"; > } > > ....You need the "and last", otherwise it will always execute the default. > > Rob > > > -----Original Message----- > From: Mark Goland [mailto:[EMAIL PROTECTED]] > Sent: Friday, October 11, 2002 3:20 PM > To: [EMAIL PROTECTED] > Subject: switch > > > Hi guys, > > I am trying to implement a switch statment in perl. I have tryed doing it 2 > way's. For some reason my comparison statments are not working can some one > please look over my code and see if they can point me on the right track ?? > > Thanx in advance, > Mark > > Solution 1: > > while( ( $Remainder = ($P_lenght%16065) ) != 0 ) > { > print "\a size you gave is not multiple of cylenders\n"; > print "round (U)p (D)own (R)enter ?"; $Ans=<>; > # chomp ($Ans); > print $Ans; > for ($where){ > /u/ && do{print "u\n";}; > /d/ && do{print "d\n";}; > # default > print "enter partition length : "; > chomp ( $P_lenght=<> ); > > > } > } > _exit 0; > > solution 2: > > while( ( $Remainder = ($P_lenght%16065) ) != 0 ) > { > print "\a size you gave is not multiple of cylenders\n"; > print "round (U)p (D)own (R)enter ?"; $Ans=<>; > # chomp ($Ans); > print $Ans; > if( $Ans =~ /u/i ){ > $P_lenght = ($P_lenght - $Remainder+$CYLLENGTH); > } > elsif( $Ans =~ /d/i){ > $P_lenght-=$Remainder; > } > # default > else{ > print "enter partition length : "; chomp ( $P_lenght=<> ); > } > > > } > > _exit 0; > > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]