On Thursday, April 18, 2002, at 03:37 , Mark Anderson wrote:
> >>>> No, you need ++ vs +1. As they say in perl, ++ is magical and will >>>> do want you want. + 1 will not. >>>> >>>> Wags ;) ps -- is not magical in the same sense as ++ either. >>> >>> How would you decrement a character then? There surely has to be a >>> way? >> >> perldoc -f ord >> perldoc -f chr >> >> my $len = $#array ; >> my $x = 0; >> $array[$x++] = chr( ord($array[$x]) - 1 ) while( $x <= $len ); > > This decrements ever character in an array. The ++ is magical in that "a" > increments to "b" and "z" increments to "aa". (ultimately leading to a > cute > little japh) > > Your solution takes "abcde" and returns "`abcd" which is not the opposite > of > the ++ operator. actually no.... the code and run of the code is shown in details below.... one could rewrite $array[$x++] = chr( ord($array[$x]) - 1 ) while( $x <= $len ); as while( $x <= $len ) { my $letter = $array[$x]; # assign nth letter my $val = ord($letter); # get it's ordinal value $val--; # decrement the ordinal $array[$x] = chr($val); # insert the Char back in x++; # increment on down the way. } and it may be a bit more obvious that we are walking ourselves through an 'array of letters' - since the question had been posited in regards to decrementing letters.... sorry if the flatlining of it was not as obvious. [..] #!/usr/bin/perl -w use strict; my @array = qw/ a b c d e f g h i j k l m n o p /; print "Letters are now @array \n"; my $len = $#array ; my $x = 0; $array[$x++] = chr( ord($array[$x]) - 1 ) while( $x <= $len ); print "Letters are now @array \n"; $array[$x]++; print "Letters are now @array \n"; [jeeves:/tmp/drieux/perl] drieux% perl !$ perl pr* Letters are now a b c d e f g h i j k l m n o p Letters are now ` a b c d e f g h i j k l m n o Letters are now ` a b c d e f g h i j k l m n o 1 [jeeves:/tmp/drieux/perl] drieux% ciao drieux --- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]