Hatena::Groupgeneration1986

ギーク目指してみる?

2009-01-27

テキスト微妙…

| 10:12 | テキスト微妙… - ギーク目指してみる? を含むブックマーク

先生お手製だけど。

配列ハッシュを新しく作るときの作り方載ってないのに最後の方の課題で必要になるし。

というわけでここにメモ。

だって前にやったときの忘れたんだもーん←



#空の配列を作る
@Array = ();

#空のハッシュを作る
%Hash = ();

ちなみに今回参照したのはこちら。

http://www.site-cooler.com/kwl/perl/

2008-11-06

初めてのPerl 2章 スカラーデータ 練習問題 (08/09/01)

| 12:59 | 初めてのPerl 2章 スカラーデータ 練習問題 (08/09/01) - ギーク目指してみる? を含むブックマーク

プログラム一行目の「#!perl」は省略してあります。


1. 半径12.5の円の円周の長さを求めるプログラム

$pi = 3.141592654;

$circle = 12.5 * 2 * $pi;

print "半径12.5の円の円周の長さは $circle です。\n";

実行例

半径12.5の円の円周の長さは 78.53981635 です。


2. ユーザが入力した値を半径として円周の長さを求めるプログラム

print "半径を入力してください。\n";

chomp($half = <>);

$pi = 3.141592654;

$circle = $half * 2 * $pi;

print "半径 $half の円の円周の長さは $circle です。\n";

実行例

半径を入力してください。

34

半径 34 の円の円周の長さは 213.628300472 です。


3. ユーザが0より小さい値を入力したら、半径を0として円周の長さを求めるプログラム

print "半径を入力してください。\n";

chomp($half = <>);

if ($half < 0){

$half = 0;

}

$pi = 3.141592654;

$circle = $half * 2 * $pi;

print "半径 $half の円の円周の長さは $circle です。";

実行例 1

半径を入力してください。

  • 5

半径 0 の円の円周の長さは 0 です。

実行例 2

半径を入力してください。

6

半径 6 の円の円周の長さは 37.699111848 です。

※ifのところは、$circle = 0 とするのも可、らしい。


4. 読み込んだ2数の積を求めるプログラム

print "数を入力してください。\n";

chomp($num1 = <>);

print "もうひとつ数を入力してください。\n";

chomp($num2 = <>);

$result = $num1 * $num2;

print "$num1 と $num2 の積は $result です。";

実行例

数を入力してください。

2

もうひとつ数を入力してください。

5

2 と 5 の積は 10 です。


5. 読み込んだ文字列を、入力された回数分だけ繰り返し、一行につき一つずつ表示するプログラム

print "文字列を入力してください。\n";

$str = ;

print "その文字列を表示させたい回数を入力してください。\n";

chomp($num = <>);

$lines = $str x $num;

print "実行結果:\n$lines";

実行例

文字列を入力してください。

赤橙の花

その文字列を表示させたい回数を入力してください。

3

実行結果:

赤橙の花

赤橙の花

赤橙の花

初めてのPerl 2章 スカラーデータ 2.4 ~ 2.5.5 (08/08/14)

| 12:56 | 初めてのPerl 2章 スカラーデータ 2.4 ~ 2.5.5 (08/08/14) - ギーク目指してみる? を含むブックマーク

今回は要約というか自分のためのメモのみ。

2.4

警告を有効にするには、

1. 実行するときにコマンドラインから -w オプションを指定する

2. #! 行に -w オプションを指定する

2通りの方法がある、らしい。が、バージョン違う Perl で実行したときに、元々警告表示されてないプログラムで警告表示されたりとか、その逆もありうるとか。


2.5

$ のあとに Perl 識別子(英文字か下線で始まって、必要ならさらにその後ろに英文字・数字・下線を続けたもの。大文字と小文字は別物扱い)がついてるやつは、スカラー変数

ちなみに、シェルでは、値を取り出すときには $ をつけるけど、新しい値を代入するときは要らない。awk や C では $ をまったくつけない。

これは PHP とかにも言えることだけど、変数名は用途がわかるようなものにすること。あと、せっかく下線が使えるんだから、変数名は読みやすく、理解しやすくすること。

先頭が大文字なのは特別なケース。大文字のみの名前だったら、その変数は特別なもの。


Perl も代入は = で表す。

ex.) $fred = 17;


代入の両側に同じ変数が現れるような式が出てきたら、二項代入演算子を使う。

ex.) $fred += 5; は $fred = $fred + 5; と等価だし、 $barney *= 3; と $barney = $barney * 3; も等価。文字列だったら、 $str = $str . " "; と $str .= " "; は等価


print()演算子は、 Ruby のときと違って () が不要な代わりに、行末に ; をつける。$ とかの特別な意味を打ち消すときは、これもやっぱり \ を記号の前につける。

文字列の中でスカラー変数を展開するときは、スカラー変数を生のまま書き入れるもよし、 . で繋げるもよし。もし、展開しようとしてるスカラー変数に値が代入されてなければ変わりに空文字列が使われる。変数名を区切るときは、そこで一旦文字列を切ってしまうか、変数名だけを {} で囲むとか。

ex.) print "fred ate $n ${what}s.\n";

初めてのPerl 2章 スカラーデータ 2.1 ~ 2.3 (08/07/29)

| 12:53 | 初めてのPerl 2章 スカラーデータ 2.1 ~ 2.3 (08/07/29) - ギーク目指してみる? を含むブックマーク

授業で Ruby 扱ってたおかげか、演算子の話とか割とするする入ってくる。読めば読むほど RubyPerl から生まれたんだなぁ、と思う。


ぁ、でも文字列を . で繋ぐのはちょっと吃驚かも。ぇ、そんだけでいいの!? って感じがちょっとする。

あと、 x で文字列繰り返せるのも面白いなぁ。「"hollow ataraxia" x 3」だったら「"hollow ataraxiahollow ataraxiahollow ataraxia"」になるってことか。可換ではないってのは注意しなきゃかも。


2.3.4 が面白かったなぁ。

"12" * "3" と "12fred34" * " 3" が等価だってこととか、 "Z" . 5 * 7 は "Z35" になるとか。これは Ruby にはなかったかも。

初めてのPerl 1章 Perl 入門 (08/07/28)

| 12:53 | 初めてのPerl 1章 Perl 入門 (08/07/28) - ギーク目指してみる? を含むブックマーク

17p より。

Unix 以外のシステムでは、1行目に #!perl と書くのが慣例になっています。

ぇー、そうなんだー、という感じ。そうか、 Windows でやるときには #!/usr/bin/perl でなくていいのか。ある意味ショック。でも長いほうの書き方でも実行されるっぽいし、そっちでやっとこうかなぁ。システムによって書き方変えるのはなんだかなぁ


これは 19p より。

しかし、ウェブ上で実行するプログラム――1分間に数百~数千回実行されるもの――は、この例外となることがあります。(中略)jこれらのプログラムの多くは実行時間が非常に短いので、コンパイルにかかる時間が無視できなくなります。あなたのケースがこれに該当するなら、プログラムを起動してから次に起動するまでの間、メモリに常駐させるというテクニックを利用することができます。お使いのウェブサーバのドキュメントを調べるか、身近にいるエキスパートに質問してみましょう。

1つの可能性として http://perl.apache.org が紹介されてたりする。PHP のでなんとなく Apache 苦手なんだよなぁ・・・。


練習問題(解答のみ)

1

Hello, world!


2

=over 8

=item atan2 Y,X

X<

Returns the arctangent of Y/X in the range -PI to PI.

For the tangent operation, you may use the C<Math::Trig::tan>

function, or use the familiar relation:

sub tan { sin($_[0]) / cos($_[0]) }

Note that atan2(0, 0) is not well-defined.

=back


3

=over 8

=item atan2 Y,X

Atan2 Arctangent Tan Tangent

Returns the arctangent of Y/X in the range -PI to PI.

For the tangent operation, you may use the Math::Trig::tan

function, or use the familiar relation:

sub tan { sin($_[0]) / cos($_[0]) }

Note that atan2(0, 0) is not well-defined.

=back


hogeloghogelog2008/11/06 19:31chomp($half = );
などと表示されてる部分は
chomp($half = <>);
ですよね。<>がタグと認識されてしまい、削除されています。

はてなダイアリーでソースコード貼るときはpreタグかはてな記法のpre記法など使わないとこのように表示が変になると思います。
http://generation1986.g.hatena.ne.jp/hogelog/20081106

hogeloghogelog2008/11/06 19:37あと
<、>、&などの文字は
&lt;、&gt;、&amp;
と実体参照に置き換えて書くという方法がありますね。めんどうなのであんまりしませんけど。

saitoK-yasaitoK-ya2008/11/16 12:35ぁ、ありがとうございます!
他のとこちゃんと書き換えてたのに見落としてました;

StephaneStephane2013/01/16 08:50A silmpe and intelligent point, well made. Thanks!

txvbpxtydxtxvbpxtydx2013/01/18 10:25NOVgbf , [url=http://jpensbhwhyyf.com/]jpensbhwhyyf[/url], [link=http://wjmwnjvhpozi.com/]wjmwnjvhpozi[/link], http://xhndyjmzxsae.com/