コピー2019.11.24Rubyを使うといっても、本ブログではそこまで本格的にということではなく、あくまでもコマンドラインでパイプをつなげて組み立てるrubyコマンドとして使います。[x86_64-linux-gnu]takk@deb9:~$私の環境ではバージョン2.3.3でした。Rubyで私が一番好きなところは、さくっと試せるってところです。インタラクティブモードを備えてます。irbコマンドを実行するだけです。nilirb(main):002:0>はい。World!と表示されたのは良いのですが、それに続く、nilとは何でしょうか。ここで関数(メソッド)を定義してみましょう。名称で始めて、endで終わります。:aaairb(main):004:0>aaaという名前を付けました。これを実行してみます。続いてnilが表示されました。次にaaaに戻り値を設定して実行してみます。続いてaaaの戻り値として設定した”HELLO”が表示されました。先ほど戻り値を設定していなかった関数aaaでは、nilが表示されました。nilとは何も値を戻してないってことです。World!に改行がなくわかりづらかったのですが、改行を入れるとこうなります。World!という表示結果、それに続いてnilが表示されていますね。printの戻り値です。irbを抜けるには、quitを実行します。変数Perlの変数(スカラー)は頭に$がついてました。Rubyの変数も同じように$をつけることができます。Perlでは$はスカラー変数を表していましたが、Rubyではグローバル変数を表します。ローカル変数の場合は、$をつけません。`<main>'irb(main):008:0>このように、$aはグローバル変数なので、aaaの中で参照できますが、bは、ローカル変数のため、aaa内から参照できません。コマンドラインで使う分には、ほとんどローカル変数で事足りますので、$をつけないことになります。$がないと変数名が短くなるわけですので特な気がしますが、Perlでやっていたこんな表現ができなくなります。HELLOtakk@deb9:~$Rubyで同じことをすると、当然なんですが文字列がそのまま表示されます。atakk@deb9:~$変数の中身を表示するには、こう書くことになります。HELLOtakk@deb9:~$Rubyの変数は、インスタンス、クラス変数がありますが、コマンドラインで使う予定がないので覚えてません。Rubyはオブジェクト指向ですので、変数もオブジェクトです。"123"irb(main):002:0>今、文字列”123′′をaに格納しました。aに1を足してみます。`<main>'irb(main):003:0>エラーになりました。文字列に数値の1を足したので当然ですね。Perlの方が特殊なのかもしれません。aを数値として解釈するには、数値に変換するメソッドを使えばよいです。124irb(main):004:0>頼もしいですね。オブジェクトなので、メソッドを使えば何でもできる気がしますね。配列Ruby続きです。配列は、全体を[]で囲って要素を,(カンマ)で区切れば作成できます。要素へアクセスするには、0始まりのインデックスを指定します。40irb(main):003:0>クォートで囲まれた要素であれば、文字列の配列となります。"bbb"irb(main):005:0>配列の各要素には、数値でも文字列でもその他オブジェクトも格納できます。"aaa"irb(main):008:0>文字列の配列を作成するときに、クォートが面倒なら、%wが使えます。"ddd"irb(main):010:0>Perlと同じく空白を含む文字列を要素にできません。要素のサイズを取得するには、sizeメソッドを使います。5irb(main):011:0>配列から配列を取り出したいなら、スライスが使えます。インデックスを指定して範囲取得するなら、.(ピリオド)を使い、変数名[インデックス..インデックス]、と指定します。"ddd"]irb(main):012:0>インデックスと、取得する要素数を指定する場合は、変数名[インデックス,要素数]と指定します。連想配列Rubyの連想配列もPerlと同じくハッシュと呼ばれます。定義するには{}で囲んで、キーと値を書きます。"猫"irb(main):005:0>数値もキーでできます。"猫"irb(main):005:0>文字列や数値だけではなく、Rubyのハッシュではシンボルが使えます。:から始める名称はシンボルとなります。...)で、参照するのは、$変数名{キー}でしたが、Perlと比べてRubyの方が分かりやすい気がします。連想配列なんだから、配列と同じアクセス方法って覚えやすいですし。Rubyのシンボルが使える点に関しては、Perlでは文字列のクォートが省略できますので、Perlの方が短く書けるのではないでしょうか。"$a{cat}\n"'猫takk@deb9:~$Perlでは=>は,にできるので、偶数個の配列をハッシュにするなんてこともできますね。読み込みRubyのテキスト読み込みです。例のごとく読み込むファイルを作成します。25takk@deb9:~$openとgetsを使って読み込みしてみます。getsメソッドで一行だけ読み込んで表示するだけのスクリプトです。linef.close()実行するとsample.txtの先頭の一行だけ表示されます。繰り返し読み込んで全部表示するには、whileを使います。どの言語も似たようなものですね。lineendf.close()実行結果です。File.readで全行を一括で読み込めます。標準入力は$stdinで読めます。line;end'12345678910takk@deb9:~$しかもgetsの場合は、$stdinから読み込むのがデフォルトなので省略できます。書き込み読み込みはこんな感じでした。思い、やってみるとエラーになります。`<main>'takk@deb9:~$読み込みの時は省略していましたが、書き込みモードを指定する必要があります。第2引数に”w”を指定します。out.txtAAAtakk@deb9:~$out.txtが新規作成されて、内容が書き込まれているようです。openはFile.openでもよいです。out.txtBBBtakk@deb9:~$openを使わずに一発で全行書き込むにはFile.writeを使います。out.txtHELLOHELLOtakk@deb9:~$配列の内容を書き込む場合は、ちょっと一工夫いりそうです。関連記事2-3.Perl/Python/RubyPerl入門コマンドの達人を目指すために、避けては通れないプログラミング言語はたくさんあると思いますが、私はPerlで育ったエンジニアなので、Perlの学習は外せないと考えています。Perlは、Linuxディストリビューションには標準で入ってい...2-3.Perl/Python/Ruby繰り返しのワンライナー(Perl/Ruby/Python)Perl/Ruby/Python各言語をかじったところで、ワンライナーを使えるようになっていきたいと思います。PerlやRubyでは-eオプション。Pythonでは-cオプションを使って直接スクリプトを書くことができます。こ...2-3.Perl/Python/RubyPython入門Perl,RubyときたのでPythonです。コマンドラインを使うときの言語にこだわりはなく、パイプが上手くつながればいいんじゃないかぐらいの感覚でPythonも使います。使うといっても他の言語と同じく入門的なことしか覚えてませんが。...2-3.Perl/Python/Ruby繰り返しが外にあるワンライナー(Perl/Ruby/Python)複数行の標準入力を受けて、フィルタ処理するワンライナーです。PerlやRubyなら、-nオプションや-pオプションで、全行処理ができるので簡単です。改行は取り除いておく必要があります。email.ホーム2.プログラミング言語2-3.Perl/Python/Rubyスポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。