Perlの基礎(スカラ〜変数、演算子)

スカラー変数、演算子


スカラー変数を定義する時のルール

  • 英字で始める事。数字からスタートできない ◯ $abc$123
  • アンダースコアはOK。ハイフンはダメ ◯ $abc_123$abc-123
  • 変数への代入は整数、浮動小数点数、文字列を代入できる。文字列はシングルクォートかダブルクォートで囲む。
    $x = 1; $z = 3.1415; $a = "Hello";

print関数で出力してみる

  • 文字列を出力 コード例
$str = "りんご";
print "これは$strです\n";

> これはりんごです
  • 整数を出力 コード例
$weight = 65;
print "私の体重は$weightkgです\n";

とするとエラーとなる。変数$weightと文字列kgを繋げて解釈してしまう為。

$weight = 65;
print "私の体重は" . $weight . "kgです\n";

> 私の体重は65kgです

上記のように連結演算子のドットで文字列と変数を繋げて表示するか

$weight = 65;
print "私の体重は${weight}kgです\n";

> 私の体重は65kgです

このように変数展開し表示する。

スカラー演算子


Perlでは他の言語と同様に算術演算子が使用できます。 コード例

$a = 1;
$b = 2;
print $a + $b, "\n";

> 3
$a = 5;
$b = 2;
print $a % $b, "\n";

> 1

文字列演算子(連結)

$a = "ABC";
$b = "DEF";
print $a . $b , "\n";

> ABCDEF

文字列演算子(繰り返し)

$c = "ABC";
$d = 3;
print $c x $d, "\n";

> ABCABCABC

参考サイト


Perl基礎入門| KentWeb

勉強方法を変更してみよう

ここ1〜2ヶ月くらいProgateに課金してhtmlから順番に進めてきて今のレベルはこんな感じになった。f:id:ameroe:20170419133359p:plain

Rubyのレッスンが半分ちょっと進んだ段階で終わったらRailsのレッスンに移ろうとしていました。

Perl入学式に参加


前回の記事Perl入学式に参加してきたでも書きましたが これに参加してきた時に講師の方が「プログラミングを学ぶ時は1つの言語を集中してやるといい。それは他の言語を学ぶ時に共通したり似ている 事が多いから。」つまりPerlをある程度勉強してから例えばRubyを学ぶ時に通用する知識や考え方が多いよという事。
また「プログラミング言語って方言みたいなものだから」という言葉もあり、1つの言語に対してある程度の理解を深めていくことが重要なのだと 考えさせられました。

これからの学び方


講師の教えに従ってPerlの入門編を学ぶのに注力することにする。 具体的には以下の方法でとりあえずやってみる。

言わずと知れた動画プログラミングサイトですが、Perl入門編を活用する。

Perl入門で検索してオススメしている方も多かったので書籍での勉強と平行してみる。

こちらの本を購入したので出来るところまで進めてみる。理解できなければサイトで調べる。

このサイトは Perl の公式ドキュメント、モジュールドキュメントを日本語に翻訳したものを表示するサイトです。 サイト内の翻訳データは、Japanized Perl Resources Project(JPRP)で翻訳されたもの、有志が翻訳しているgithubリポジトリJPAの翻訳文書から取得しています。

公式の翻訳なので間違えないでしょう。

しばらくはこんな感じでPerlの基礎を学んでいきたい所存です。

Perl入学式に参加してきた

Perl入学式とは


Perl入学式は2012年に大阪で発足した、プログラミング初心者やPerl入門したい人を対象とした勉強会です。1年を通じて全5回のカリキュラムが行われ 5回目のカリキュラムではPerlを使って簡単なwebサービス(twitter風1行掲示板)を作れるようになろうという内容です。 今年2017年は大阪、東京、沖縄、札幌の4都市で開催される予定です。

詳しくはこちら Perl入学式とは

1回目でやったこと、教わったこと


Perl入学式 in札幌 第1回は3部構成になっていました。第1部ではwindowsユーザー向けの環境構築の部、 第2部はmacユーザーも参加しターミナルやエディタなど開発環境の構築。第3部ではPerlの歴史やPerl入学式の話、 ターミナルやエディタを使って実際にHello,worldを出力したり簡単なプログラムを書いてちゃんと出力されるかなどの内容でした。

僕はmacユーザーなので第2部からの参加。windowsユーザーの方々はVirtualBoxubuntuをインストールしているところでした。 無事、皆さんがインストールを終えた後に第2部スタート。ターミナルの基本操作の説明などを経て、 実際ホームディレクトリの下にmkdirコマンドでディレクトリを作成しtouchコマンドでファイルを作成したり、rm , open . , cdなどの基本的な操作を教わりました。
また、エディタでHello,world!を出力するプログラムや自己紹介を出力するプログラムを作成して出力するなど練習問題形式ですすんでいきました。

参加した感想


参加した感想としては「参加してよかった!」でした。自分自身、プログラミング初心者で参加者の方々に顔見知りがいない状況だったので 正直不安でしたが、入学式というだけあってしっかり初心者にも気を配ってくれていると感じました。
また講師の方の他にサポーターという方々が3〜4名いて、わからない人は近くのサポーターの方に声をかければ即座に教えてもらえる 体制となっていました。これは「質問する」という行為のハードルを下げてくれる良いシステムだなと感じました。
Rubyist(ルビイスト)やPythonista(パイソニスタ)のようにPerl使いはPerl Monger(パール・モンガー)というようで Perl入学式の校長であるpapix氏から「家に帰ったら家族にPerl Mongerになったって言うといいよ」と言われたので さっそく言ってみたけどまあ反応は無かったですw
全5回制覇してPerl Mongerを名乗れるように頑張りたいと思います。講師やサポーターの方々ありがとうございました!

ProgateでLv.100突破

大した事じゃないんですけど、ProgateでLv.100をようやく突破したのでやったことまとめ。

やったこと


f:id:ameroe:20170405211948p:plain

HTML , CSS , jQueryを1ヶ月くらいかけてやりました。

f:id:ameroe:20170405212339p:plain f:id:ameroe:20170405212348p:plain

クリアしたコースはこんな感じ。☆の数がクリアした回数なので2回目の復習をしているうちにLv.100を超えてました。

実は実践コースは全然クリアできてなくて、現在悪戦苦闘中です。実践コースになると一気にレベルが上がるけど何とかクリアできそうな気持ちにさせてくれるのがProgateのすごいところだと思う。

次の目標


GW前までにRubyRuby on Railsのコースを1回はクリアしておきたい。

その前に残ってるHTMLとjQueryの実践コースをやっつけたいと思います。

jQuery 上級編1

上級編 その1


ProgateでjQueryの上級編に進んでからかなり進むスピードが遅くなってきたので少しづまとめる。

eqメソッド、indexメソッド


<ul>
  <li>その1</li> <!--0-->
 <li>その2</li> <!--1-->
 <li>その3</li> <!--2-->
</ul>

このような「li」要素にはjavascriptの配列のようにインデックス番号をもっている(0から始まる)。
eqメソッドを使用してjQueryで3番目の「li」要素を取得しcolorをredにする場合は下記のようにする。

$('li').eq(2).css('color','red');

また、インデックス番号を取得したい場合はindexメソッドを使用する。

<ul>
  <li>その1</li> <!--0-->
 <li class = "active">その2</li> <!--1-->
 <li>その3</li> <!--2-->
</ul>

上記の「li」要素から「.active」のインデックス番号をindexメソッドで取得する。

$('li').index($('.active'));

とすると、インデックス番号の「1」が取得できる。

jQuery 中級編

中級編クリア


ProgateでjQuery 中級編をクリアしたけど中身がわかってないので振り返り

thisの構文


thisはイベントが起こった要素を取得することができる。

<ul>
  <li>リスト1</li>
  <li>リスト2</li>
  <li>リスト3</li>
</ul>

のようなli要素に対しクリックしたli要素のみcolorをredにしたい場合は以下のようにする。

$('li').click(function(){
  $(this).css('color','red');
})  

clickイベント時にモーダルが表示、非表示されるようにする


clickイベントの時にモーダルを表示したいのでcssで通常は非表示にしておく。

セレクタ { display:none; }

jQueryでclickイベントを設定し、fadeInメソッドでモーダルを表示する。 例としてid=btnをclickした時に、class=modalを表示したい場合は

$('#btn).click(function(){
  $('.modal').fadeIn();
});

となり、逆にモーダルを非表示にする場合はセレクタに対してfadeOutメソッドで隠します。

hasclassメソッド


hasclassメソッドは引数に指定したクラスをオブジェクトが持っているかを判定する。
持っていればtrue、持っていなければfalseを返す。

$('.answer').hasclass('open')  //結果 false  
$('.answer open').hasclass('open')  //結果 true

判断した後にif文を用いて,結果に応じた処理を行うことも出来る。

jQuery 初級編

初級編クリア


ProgateでjQuery 初級編をクリアしたので簡単にまとめ

jQueryとは


  • javascriptのライブラリの1つ
  • HTMLやCSSでは表現できなかったアニメーションや様々な動きをつけられる

オブジェクトとメソッド


基本的な構造は以下のようにする

$('セレクタ').メソッド(引数);

$(‘セレクタ’)でオブジェクト作成ができ、その後に.メソッドで呼び出す事ができる。

初級編に出てきたメソッド

  • hide ⇢ 要素を隠す(showメソッドは要素を表示する)
  • fadeOut ⇢ 徐々に消えていくアニメーション(fadeInメソッドは逆の効果)
  • slideUp ⇢ 下から上に徐々に消えていくアニメーション(slideDownメソッドは逆の効果)

例としてfadeOutメソッドの使用例

$('セレクタ').fadeOut(slow);
//引数をslowとすると、ゆっくり消えていく

イベントの構文


基本的なイベントの構文は以下のようにする

$('セレクタ').イベント名(function() {
   //イベント発生時に実行したい処理
});

セレクタをクリックした際に、セレクタの入れ子のid = “text"に対し イベント(hideメソッド)を発生させたい場合は

$('セレクタ').click(function(){
   $('# text').hide();
});

以上、忘れる前に備忘録として記録。