2011年7月4日月曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
  • Script言語:Perl

『初めてのPerl 第5版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-427-9) の14章(文字列処理とソート), 14.5(練習問題)、1を解いてみる。

 

1.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;

my @numbers;
while(<>){
  push @numbers,split;
  }
my $length=0;
foreach(@numbers){
  $length=length($_) if $length<length($_);
  }
foreach(sort {$a <=> $b} @numbers){
  printf "%${length}g\n",$_;
  }

問題のサンプルデータの数値のリストを読み込む

入出力結果(Ternimal)

オライリーのウェブサイトから入手したnumbersというファイルを、上記のプログラムで処理。

入出力結果(Ternimal)

出力する際、数値ではなく文字列として出力してみる。

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;

my @numbers;
while(<>){
  push @numbers,split;
  }
my $length=0;
foreach(@numbers){
  $length=length($_) if $length<length($_);
  }
foreach(sort {$a <=> $b} @numbers){
  # gではなくsに変更
  printf "%${length}s\n",$_;
  }

問題のサンプルデータの数値のリストを読み込む

入出力結果(Ternimal)

オライリーのウェブサイトから入手したnumbersというファイルを、上記のプログラムで処理。

入出力結果(Ternimal)

数値の先頭が0の場合や、浮動小数点の最後に0が含まれる場合、数値の場合と文字列の場合は微妙に出力結果が異なる。(数値の場合は0が省略されたり、文字列の場合は表示されたり。)

ファイルの用意が必要な場合はO'Reilly Japan - 初めてのPerl 第5版の関連ファイルのプログラム例に含まれているものを使用しています。

0 コメント:

コメントを投稿