Perl楽しいから好き

Perlをはじめとしたプログラミング周りのあれこれについて。モダーンなPerlを楽しんでいます。

2018-01-01から1年間の記事一覧

PerlでHTMLファイルのmetaタグを読んで文字コードを判定する処理を書いてみた

300個以上の静的htmlファイル内のリンクを一括で置き換える事案に遭遇。単純に置き換えすると文字化けする。なぜなら、shift-jisとutf-8が混在しているから。ファイルの編集者が別なので、文字コードを統一することはできない。ということで、Perlの出番です…

Perlで2つの配列を比較し、重複する要素の数をカウントする処理を書いてみた

「6月に来店したお客様のうち、7月に何名の方がリピートしてくださったか?」といった数字を拾いたい事象が発生。6月の来店済み顧客IDの配列と7月の来店済み顧客IDの配列を比較して重複分を拾えばいいじゃない!ということで、書きました。foreachを2重にす…

Perlでランダムで0から9の数字を出して、すべての数字が揃ったら終わるという処理を書いてみた。

プログラミングの地力を上げたいなぁと思い、数学パズルっぽいのをコードで解いています。棋力を上げるために詰将棋を解くようなノリです。ある問題を解くために「0から9の数字が全て出てきたら終了」という処理が欲しかったので書いてみました。 use strict…

Perlで300ページ以上の静的HTMLファイルの「http://」を「https://」に一気に置き換える。バックアップファイルを保存しながら、ね。

2018年7月某日、グーグルがSSL/TLS未対応サイト絶対許さんマンになってから、「うちのサイトもなんとかしてほしい」という問い合わせが増えてきました。「保護されていない通信」とかデカデカと表示されたら、流石に焦りますよね。オープンソースのおかげで…

Perlで、とある配列を指定した要素数ごとに別の配列リファレンスに分割する処理をList::MoreUtilsモジュールで書き直してみた

『初めてのPerl 第7版』を練習問題もこなしつつ、自分史上最高なんじゃないかというくらい丁寧に読み進めています。この本、過去の版のものを何度か読んでたんですが、ビット演算子とかプロセス管理とか新しい学びがいっぱい。ホントに適当に読んでたんだな…

Perlの正規表現を使って、HTMLの中にあるJavascript部分を取り除いてみた。

HTMLの中のコンテンツ部分だけ抽出したい、という欲望がムクムクと湧いてきたのでPerlの正規表現で書いてみました。これまでも、HTMLタグを取り除く処理は書いたことあるんですが、「欲張りでない量指定子」(Non-Greedy Matches)が理解できてなかったので、J…

Perlで、とある年月を引数に与えるとその月の年月日をYYYYMMDD形式の配列リファレンスで返してくれるサブルーチンをテストから書いてみた

やりたいこと '201808' ↑みたいな引数を渡したら、 [ qw( 20180801 20180802 20180803 20180804 20180805 20180806 20180807 20180808 20180809 20180810 20180811 20180812 20180813 20180814 20180815 20180816 20180817 20180818 20180819 20180820 20180…

Perlで、とある配列を指定した要素数ごとに別の配列リファレンスに分割する処理

my @arr = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); ↑ こういう感じの配列を、 my $expected = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ]; ↑ こういう感じに分割したい欲望に駆られました。この場合は、13個の要素を持つ配列を4つの要素…

Perl6の猫オペレーター、カワ(・∀・)イイ!!

#!/usr/bin/perl6 say @(0 ^..^ 9); # → (1 2 3 4 5 6 7 8) ↑ 猫がいる! ブラウザでPerl6が気軽に試せるオンラインコンパイラー Ideone.com - Online Compiler and IDE >> C/C++, Java, PHP, Python, Perl and 40+ other compilers and interpreters

Perl初心者な私でも、CPANテスターとしてオープンソースに貢献できた!

きっかけ 今まで気になりつつも、やったことなかったんですが、moznionさんの2013年のスライド↓YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うhttps://www.slideshare.net/moznion/yapc2013-26371522 YAPC::Asia 2013 - CPAN Testers Reports …

Perlでuse utf8したまま明示的に半角スペースを全角スペースに置き換える

#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.010; use Encode qw(encode); # 半角スペースを明示的に全角スペースにする my $str = "ニューヨーク シティボーイ"; say encode('utf8', $str); # ニューヨーク シティボーイ $str =~ s/\s/…