$s =~ s{(\w+)}{scalar reverse($1)}eg; --- From Shlomi Fish

perl -e'@words=split/\s+/,$ARGV[0];
>
> $_=reverse$_
> for@words;print"@words\n";' 'abcd efgh ijkl mnop' Shawn Corey
>
> print join ' ', map scalar reverse($_), split ' ', $str; Rob Dixon
>
> It is time we explain our codes ... I don't think that Narasimha will
> easily wrap his head around the first two.
>

(Once again Emeka, please bottom-post your responses and edit what you
are quoting to what is relevant. Thanks :)

I agree. It is a shame that senior and supposedly wise contributors here
feel the need to boost their egos by posting obscure code. It is
primarily a /beginners/ list, and should be treated as such. If you
cannot teach then please hold off from showing us your wares. Perl
already has a reputation for being incomprehensible without people who
should know better proving that they are right.

In particular I believe Perl should be treated as a programming
language. Its flexibility allows a short script to be passed on the
command line but, unless the question requires it, a perl -e "script"
solution is an ugly way to express a solution. In particular it does not
allow us to insist on the mandatory

use strict;
use warnings;

header, and the consequent declaration of lexical variables.

Rob


OK:

#!/usr/bin/env perl

# prevent silly mistakes
use strict;

# issue warnings of possible mistakes
use warnings;

# read from Perl's data file handle, contents appear after __DATA__
while( my $line = <DATA> ){

 # remove trailing newline
 #   a newline is whatever is in $/, the $INPUT_RECORD_SEPARATOR
 #   see `perldoc perlvar` and search for /\$INPUT_RECORD_SEPARATOR/
 chomp $line;

 # split on whitespace, ignore leading and trailing empty elements
 #   see `perldoc -f split`
 my @words = split ' ', $line;

 # do each word, one at a time
 foreach my $word ( @words ){

   # reverse each word w/ Perl's reverse().  See `perldoc -f reverse`
   #   since this is scalar context, the string is reversed
   # since $word is the `for` iteration variable,
   #   any changes to it are stored back in @words
   $word = reverse $word;

 } # end foreach $word

 # use Perl's stringification to join the words back into a line
 #   and print the original line and the modified one
 print "$line  :  @words\n";

} # end while <DATA>

Awesome!  Great Job!  Thanks a million :(

Regards,
Emeka

On Tue, Aug 30, 2011 at 6:38 PM, Shawn H Corey <shawnhco...@gmail.com>wrote:

> On 11-08-30 01:14 PM, Rob Dixon wrote:
>
>> On 30/08/2011 17:54, Emeka wrote:
>>
>>>
>>>
>>> $s =~ s{(\w+)}{scalar reverse($1)}eg; --- From Shlomi Fish
>>>
>>> perl -e'@words=split/\s+/,$ARGV[0];**$_=reverse$_
>>> for@words;print"@words\n";' 'abcd efgh ijkl mnop' Shawn Corey
>>>
>>> print join ' ', map scalar reverse($_), split ' ', $str; Rob Dixon
>>>
>>> It is time we explain our codes ... I don't think that Narasimha will
>>> easily wrap his head around the first two.
>>>
>>
>> (Once again Emeka, please bottom-post your responses and edit what you
>> are quoting to what is relevant. Thanks :)
>>
>> I agree. It is a shame that senior and supposedly wise contributors here
>> feel the need to boost their egos by posting obscure code. It is
>> primarily a /beginners/ list, and should be treated as such. If you
>> cannot teach then please hold off from showing us your wares. Perl
>> already has a reputation for being incomprehensible without people who
>> should know better proving that they are right.
>>
>> In particular I believe Perl should be treated as a programming
>> language. Its flexibility allows a short script to be passed on the
>> command line but, unless the question requires it, a perl -e "script"
>> solution is an ugly way to express a solution. In particular it does not
>> allow us to insist on the mandatory
>>
>> use strict;
>> use warnings;
>>
>> header, and the consequent declaration of lexical variables.
>>
>> Rob
>>
>>
> OK:
>
> #!/usr/bin/env perl
>
> # prevent silly mistakes
> use strict;
>
> # issue warnings of possible mistakes
> use warnings;
>
> # read from Perl's data file handle, contents appear after __DATA__
> while( my $line = <DATA> ){
>
>  # remove trailing newline
>  #   a newline is whatever is in $/, the $INPUT_RECORD_SEPARATOR
>  #   see `perldoc perlvar` and search for /\$INPUT_RECORD_SEPARATOR/
>  chomp $line;
>
>  # split on whitespace, ignore leading and trailing empty elements
>  #   see `perldoc -f split`
>  my @words = split ' ', $line;
>
>  # do each word, one at a time
>  foreach my $word ( @words ){
>
>    # reverse each word w/ Perl's reverse().  See `perldoc -f reverse`
>    #   since this is scalar context, the string is reversed
>    # since $word is the `for` iteration variable,
>    #   any changes to it are stored back in @words
>    $word = reverse $word;
>
>  } # end foreach $word
>
>  # use Perl's stringification to join the words back into a line
>  #   and print the original line and the modified one
>  print "$line  :  @words\n";
>
> } # end while <DATA>
>
>
> # The lines after the __DATA__ or __END__
> #   are read by the <DATA> file handle
> __DATA__
>
> abcd efgh ijkl mnop
>
>
>
> --
> Just my 0.00000002 million dollars worth,
>  Shawn
>
> Confusion is the first step of understanding.
>
> Programming is as much about organization and communication
> as it is about coding.
>
> The secret to great software:  Fail early & often.
>
> Eliminate software piracy:  use only FLOSS.
>
> "Make something worthwhile."  -- Dear Hunter
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>
>


-- 
*Satajanus  Nig. Ltd


*

Reply via email to