sironekotoroの日記

Perl で楽をしたい

Perl入学式 オンライン 2021 第1回お疲れ様でした

Perl入学式 オンライン 2021 第1回

受講された方、サポーターの方、お疲れ様でした。 講師の人です。

今回は Windows の方には事前に環境構築をお願いしており、おかげで従来の第 1 回の範囲を超えて四則演算まで到達することができました。

環境構築が間に合わなかった方、5月中旬に予定されている第 2 回まで時間があります。環境構築にチャレンジしてみませんか?

以下のテキスト、動画、そして質問等があれば Discord で Perl入学式のサポーターが回答します。

github.com

www.youtube.com

discord.com

また、講義途中でわからなくなってしまった方、 Discord で質問いただければ、サポーター陣が回答します。

ぜひ質問してください。

過去の第1回エントリ

sironekotoro.hateblo.jp

sironekotoro.hateblo.jp

sironekotoro.hateblo.jp

sironekotoro.hateblo.jp

GUICUI

従来利用しているマウスとファイル・フォルダを操作する GUI と異なり、キーボードとコマンドで操作する CUI は戸惑うことも多いと思います。

とはいえ、プログラムを学ぶときに CUI は(今のところ)避けて通ることができません。

今回の第 1 回で、普段の GUI で行っているようなファイル作成、移動・名前変更、コピー、削除、フォルダ作成、フォルダ削除ができるようになりました。

これらのコマンドとプログラム(もちろん Perl も)を組み合わせることで、GUI では手間のかかることも簡単にできるようになります。

もちろん、初心者の方が「簡単に」できるようになるまでは時間が必要ですが、時間をかけて学べばできるようになります。

例えば、フォルダの中にあるファイル名の先頭に定型の文字、例えば「処理済_」をつけるとか・・・GUI でこれをやるとしたら結構大変だと思うんですよね。

・・・ってことで適当に課題を思いついてしまったので、適当に実装してみましたがこんな感じです。

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

# add_done.pl
# このプログラムと同じフォルダにあるファイルを対象にする
# sample ってついているファイル名のファイルの先頭に 処理済み_ という
# 提携文をつける
opendir my $DH , '.' or die;
for my $file (readdir $DH){
    next if $file !~ /sample/;

    my $newfile = "処理済み_$file";
    system "mv $file $newfile";
}
closedir $DH;

・・・無理矢理 Perl で処理した感アリアリなのですが、まぁそこはともかく。

変更前

f:id:sironekotoro:20210426005557p:plain

変更後

f:id:sironekotoro:20210426005553p:plain

20 個くらいであればまぁ、手でやるのとプログラム書くので同じ時間くらいだとは思うんですが、10000 個とかになると手でやってられないですよね。

もちろんファイル変更専用のツールもあるのですが、プログラム学ぶとそれ(ファイル名変更)以外のこともできるので、応用の範囲は広いです。

放課後ミニコーナーや Discord で質問・やりたいことをお待ちしてます

今回は「Twitter のフォロワー数調査を行いたい」という要望がありました。

これを実現するには、もちろん人間が頑張るってのもあるんですが、プログラムで頑張ってもらうというのが現実的だと思います。

Twitter API 使って、フォロワーのIDをカウントするのが普通のやり方でしょうか。

API というのはプログラムからアプリケーション(ここではtwitter)の情報を取得する際の窓口、くらいに思ってください。

developer.twitter.com

このAPI を使うには、Twitter に利用申請が必要です。

dev.classmethod.jp

www.itti.jp

Twitter API を利用できるようになったら、Perl のモジュールを利用して情報を取得する、っていう感じです。

metacpan.org

これらは Perl 入学式の範囲ではないですが、こういう手順がありますよーという感じで、わかる範囲で回答できます。

世の中には、たくさんのツールがあります。

自分が欲しいツールを誰かが先に作っていればいいのですが、なければ作るしかありません。その手助けができれば幸いです。

オンライン第 2 回

5 月中旬くらいを予定しています。

次回は以下を予定してますが、変わるかも知れません。配列くらいまでいけるかな?

  • 文字列連結
  • 標準入力
  • 条件分岐「if 文, else 文」
  • 論理演算子「&&(かつ), ||(または)」

開催日は公式アカウントや Discord で告知します。