1

誰かが私の間違いを指摘できますか?

while(<STDIN>){
  my $reverse = reverse $_; #(explicit - to force casting)
  if( 5 <length ){
        print "Reverse is $reverse\n";
  }
  else{
    print; #this will print $_ scalar context
  }
}

プログラムを実行し、

1234567
Reverse is
7654321

しかし、もし私 print "Reverse is $reverse\n";print "$reverse\n"

1234567

7654321

誰かが何が起こっているのか説明できますか? どうすれば改行を削除できますか?

4

2 に答える 2

5

の逆は"1234567\n"です"\n7654321"。反転する前に改行を取り除きたい場合は、組み込みchomp関数を使用できます。

while(<STDIN>){
  chomp;
  my $reverse = reverse $_; #(explicit - to force casting)
  if( 5 <length ){
        print "Reverse is $reverse\n";
  }
  else{
    print "$_\n"; #this will print $_ scalar context
  }
}
于 2013-05-14T01:04:06.617 に答える
1

chomp;ループの最初の行として追加し、削除された改行を補うためにsay;orprint "$_\n";の代わりに使用します。print;

use strict;
use warnings;
use feature qw( say );

while (<>) {
   chomp;
   if( 5 < length ){
      say "".reverse;
   } else {
      say;
   }
}
于 2013-05-14T01:03:39.603 に答える