Perl楽しいから好き

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

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/…

Windows10コマンドプロンプトでTest::Mojo したときの日本語文字化け対処

テスト大事だよねって今さら改心した。 昨日『モダンPerl入門』を読んでて、「ナマケモノになるためにテスト書く」っていう感じのところが腑に落ちた。確かにリファクタリングとか機能追加が億劫になるのって、動いてるものが同じように動くって確信持てずに…

PerlワンライナーでSAY!!!してみる

いい加減 say 使ってもいいかも。 say関数 といえば、Perl 5.10 から導入された「改行付き print」。Ruby書いてて「puts」とか超便利じゃん!って妬ましい気持ちになったものですが、Perlでもできちゃうんですねー。 ただ、僕の主戦場の格安レンタルサーバー…

Mojolicious::Lite のcsrf_fieldタグヘルパーでCSRF対策を体感してみた

クロスサイト・リクエスト・フォージェリ(CSRF)対策としてのトークン発行Webアプリケーションを狙った攻撃としてポピュラーなCSRF。MojoliciousにそんなCSRF対策のためのタグヘルパーがあったので、試してみました。CSRFだけでなくWebアプリケーションのセキ…

Perlでエスケープシーケンスした16進数の置き換えにハマったけど、quotemeta()で解決した件。

難読化されてるPerlスクリプトを読みたくて、置き換え処理をチョコチョコっと書いたけどうまく動かず。perl -d hoge.pl みたいな感じでデバッガ使って動作確認しても、一見おかしなところは無いっぽかった。 原因は、置き換えに使ってる変数に入ってるバック…

PerlでTwitterアプリ開発するときにSSLが必要になったっぽい- Net::Twitter

今さら感満開ですが、Twitterのつぶやきアプリ的なものを作ってみようと思った。もちろん大好物のPerlで。APIキーの取得から、Access token取得の流れまで解説してくれた下記ブログを参考にさせていただきました。http://d.hatena.ne.jp/ozuma/20121230/1356…

Perl で複数のファイルを一気に開いて、Linuxコマンド【paste】みたいにつなげてみた

3つのファイルの1行目同士、2行目同士・・・n行目同士をつなげたい衝動に駆られました。Linux環境では、 $ paste 1.txt 2.txt 3.txt > res.txt みたいにすれば一発でしたが、Windows環境なのでそれもできず・・・。 で、Perl でやってみました。 まずは、…

Perl でUTF-8(BOM無し)ファイルをUTF-8(BOM付き)に変換する方法

Windows 向けのソフトに読み込ませるファイルをUTF-8(BOM付き)にする必要があったので、やってみた。TeraPadで開いて「文字コード指定保存」すればできるんだけど、スクリプト処理の一連の流れに乗せたかったので、やってみますた。Windows7(64bit)環境でや…

Perlで育った僕がJavaを始めた理由。

Perlを使い始めてかれこれ4年ほどになります。僕のプログラミングバージンはPerlに破られたので、変数とか、条件分岐とか、繰り返しとか、配列とかはPerlで身に着けました。ちょこっとモジュールとかも使えるようになったりして、自分の欲しいツールは大体…

WindowsパソコンでPerl置き換え演算子s// で発生した文字化けを Encode.pm でスマートに解決!

マルチバイト文字列が母国語の我々を常に悩ませる問題。そう、文字化け! 1年ちょい前に書いたエントリーでも文字化けについて書いてるけど、今日もややハマりそうになって、「perl Encode.pm」でググると自分のブログに到着。 おかげでスムーズに解決。あ…

Perl のEncode.pm について。今さらながらに、わかったこと。

特に文字コードを意識することなくフツーに文字コード shift_jis で書いたスクリプト内で、日本語を print しても文字化けしないのは、たまたま処理がうまくいってるだけなんだということが今さらになって、わかった。※ちなみに、WindowsXP、Perl v5.10.1 な…

Perlで複数行の置き換えをやってみたよ

mをsにしたら結構サクッと置き換えもできちゃった。てへっ。 #!/usr/bin/perl # # 複数行の置き換えを行うスクリプト-2 # 2011.10.29_scripted by perl48 use strict; use warnings; my $multiple_data; foreach my $data (<DATA>) { $multiple_data .= $data } #p</data>…

Perlで複数行のマッチをやってみたよ

複数行のマッチとかできたら幸せになれるのに・・・って思いながら結城浩さんの『Perl言語プログラミングレッスン』を読んでたらできました。 #!/usr/bin/perl # # 複数行の置き換えを行うスクリプト # 2011.10.29_scripted by perl48 use strict; use warnings…

宮川プロダクツWeb::Scraperを使って楽天の商品情報をブッコ抜いてみたよ。

待望の冨田尚樹氏の書籍『Perl CPANモジュールガイド』が発売になった。 早速購入! 「この本の登場で、Perl業界が盛り上がること間違いなし!」 などと妄想しつつ、書籍を参考にしながら以前使いこなせずに挫折したWeb::Scraper を試してみた。 お題は 『楽…

DELLのチャットの対応がヤヴァい。

お昼休みに、DELLのチャットでPCについて質問してみました。 リアルタイムだから当たり前だけど、対応超はぇぇ。 「FreeBSDを入れてUQWimaxにしようと思うんですが・・・」 という 「は?勝手にやれよ。」 と言われそうな質問にも丁寧に答えてくれました。 ちょ…

Perlの聖書(ラクダ本)が届いた!

ついに、ペーパーバックの英語の中古本だけど、 2,050円(送料込み)で買った『Programming Perl』が届いたー!! よくよく見ると、2000年出版の3rd Edition でPerl 5.6までしかカバーしてなかったりするw Unicode の節が、「将来実装予定だぜ」的なこと書い…

Perl=>WWW::Mechanizeでの日本語の扱いでつまづき、解決した件。

WWW::Mechanizeを使いこなしたい オライリーの『SPIDERING HACKS』を買ってからというもの、「MADにWEBの情報を集めて整理してエグイ感じで発信してやるぜ、グヘヘ」と思っていたが、いまいち進んでいない。 一番の原因は、日本語マルチバイトの壁。 使って…

CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみた件。

CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみたお。 探せばいるもので、CentOS 5.5のPHPをバージョン5.3.5 にアップグレードしてみました。基本的には(というか1から10まで)Natzさんのブログの手順通りにやりました。 Natzさん、スペシャ…

CentOS5.5 の標準PHPバージョンが5.1.6なので、yum でPHP5.2.16にアップグレードしてみた。

CentOS5.5 の標準PHPバージョンが5.1.6なので、yum でアップグレードしてみたときのメモ。入力コマンド(1) # yum update出力結果(1) Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: rsync.atworks.co.jp * base…

Perlでテキストファイルの半角スペースを取り除く

#!/usr/bin/perl use strict; use warnings; use utf8; # フィルハンドルを開いてコンテンツを読み込む open my $contents, '<', 'digital_dic2.txt'; # 半角スペースを取り除き半角スペースタグ除去後のコンテンツを表示する # 改行は残したいのでケツに\n…