タグ

PerlとTipsに関するpmakinoのブックマーク (89)

  • ActivePerlのオフライン構築

    ActivePerl 体は実行インストーラで何時でもインストールできるが、ppm や cpan で組み込む追加モジュールはオンライン構築が前提になっている。だが世間から断絶された秘匿ネットワークや、そもそもインターネットに接続するという概念のない PCやサーバに納品したり、機材リプレースで開発環境を再構築しなければならない場面では、USBメモリや DVD-Rからのオフラインインストールが出来なければ話にならない。そもそもバージョンが数世代古くなるとダウンロード元の ppmレポジトリが有料プラン専用に切り替えられて、いつもで気軽に再ダウンロードすることができなくなってしまう。それでは10年以上メンテ契約が続くような案件では、開発当時の状況保存は結構重要な問題になるので予防線を張っておくことは必要なのだ。 .ppmxファイルの保存 ppm install を実行すると、レポジトリから .pp

    pmakino
    pmakino 2018/06/14
    最近の ActivePerl のモジュールをオフライン環境にインストールする方法。インターネット接続性のない環境は面倒くさくて困る。
  • 実用 perl ワンライナー - Qiita

    こちらの記事で紹介されているawkでの操作について、Perlではどう書けるかを確認したものです。 http://qiita.com/b4b4r07/items/45d34a434f05aa896d69 awkは難しいけど、Perlならちょっとだけ普通のプログラミング言語に近いから何とか…(あるいは昔CGI書いてたから何とか…)というニッチ層向け。 使用するコマンドラインオプション 各オプションの詳細は perldoc perlrun コマンドで参照できます。 -e 'Perlプログラム' パラメータをそのままプログラムとして実行します。ワンライナーの根。 -E 'Perlプログラム' -e と同じですが、いくつかの追加機能が有効になります。ワンライナーでは主に、末尾に改行を追加して print する関数 say を使えるようにするために指定します。 -n 入力の各行に対して指定したプログ

    実用 perl ワンライナー - Qiita
  • Perl を学ぶとき、真っ先に覚えたいモジュール

    春ですね! 新年度ですね! Perl 書くことになってしまいましたか! 奇遇ですね! sigil が意味わかりませんか! 特殊変数がググれませんか! リファレンスが謎ですか! 1; の存在が不明ですか! オブジェクト指向が難しいですか! むしろオブジェクトじゃないコードの方がゆるくて大変ですか! XS が読めませんか! ええ、XS は僕もあんまり読めません>< さて、この春から Perl を学ぶことになった人も多いかと思いますが、なにはなくともこれまず覚えたら後が楽になるんじゃないかというモジュールを、いくつか紹介したいと思います! (まあ、自分の初期を思い返すと、この辺はやく知っておきたかったなあというリストです) Data::Dumper, YAML 変数(リファレンス)やオブジェクト(blessされたリファレンス)をダンプする用途では、Data::Dumper が一番メジャーのような

    Perl を学ぶとき、真っ先に覚えたいモジュール
  • Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ

    Perlでコマンドラインオプションをparseしようと思うと組込みモジュールとしては Getopt::Std と Getopt::Long がある。が、long style option *1 つまり --option-name のようなオプションを解釈してくれるのは Getopt::Long だけだ。なので普通はこちらを使おう。 ただし 絶対にデフォルト、つまり以下のようにして使ってはいけない。 use Getopt::Long; my (@primary, @secondary, $silent); GetOptions( "server-primary|p=s" => \@primary, "server-secondary|s=s" => \@secondary, "silent|S" => \$silent ); これダメ! 絶対ダメ! 死ぬ! 最初に結論を書く 必ず以下のように

    Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ
  • 2010-05-31

    @ksaito11: シェルの重複起動防止 URL 2010-05-31 23:08:02 via Hatena 同じシェルを複数起動しないようにするには、ロックファイルを使う方法が良く知られています。 単純明快な方法ですがシェルがkill -9で停止した場合には、タイミングによってロックファイルが削除されないことがあります。 メンテナンスフリーで重複起動を防止するには、すこしトリッキーな方法を使う必要があります。 どちらが良いというより状況により使い分けが必要となります。 続きを読む

    2010-05-31
  • ログの任意のキーワードに好きな色をつける - Cside::Weblog

    Apacheログに色を付けて快適tail生活 - y-kawazの日記 というのがあるけれど、 [31m とかで色を指定するのあまり人間が読める感じがしないので、もっと簡単に定義できるやつ作った。https://gist.github.com/2929372こんな感じにキーワードと色を定義できる。 ' (200) ' => 'green', ' (5\d{1}) ' => 'red', ' (404) ' => 'red on_yellow', こんなふうに、tail とか cat とかにパイプでひっかけて使う。 $ tail -f access_log | perl colorize.pl $ plackup app.psgi 2>&1 | perl colorize.pl

  • perl と CrenaHtml2jpg を使って大量のサイトを自動キャプチャする方法

    大量のサイトのキャプチャ画像を取得したい!そんな要件のお仕事もたまにあるでしょう。 実際、そんな要件に答えるために随分昔に作ったツールがありましたが、最近また利用する機会があったのでブログのエントリとして記載しておこうと思いました。 過去イロイロと検証した結果ですが、Windows + IE + CrenaHtml2jpg によるキャプチャ画像が一番いけてる画像が取得できる結論に達しました。CrenaHtml2jpg とは http://dip.picolix.jp/disp5.html で公開されているサイトキャプチャツールで非常に良くできたツールです。一般的な使われ方としての GUI 提供板貝に、サーバ向け?としてコマンドラインから内部的に IE を起動して描画してキャプチャ画像を出力する機能を有しています。動作中はもちろんパソコンが重くなるし、コピペが若干動作が怪しくなったりしますが

  • Perlでもっとも簡単にタイトルタグの中身をしる方法 - tokuhirom's blog

    http://en.yummy.stripper.jp/?eid=1418076 % perl -MLWP::UserAgent -E 'say LWP::UserAgent->new()->get("http://dic.nicovideo.jp/a/%E3%81%AA%E3%80%81%E3%81%AA%E3%82%93%E3%81%A0%E3%81%A3%E3%81%A6%E3%83%BC!")->header("title")'LWP は title タグを解析してくれるので、こうすればよい。

  • perl - 短縮URLを一行で展開する : 404 Blog Not Found

    2011年01月03日06:00 カテゴリLightweight Languages perl - 短縮URLを一行で展開する Perlですから。 Schwarze SQ: 短縮URLを展開するRubyスクリプトを作ってみた なにやら短縮URLを使い、不正なサイトにアクセスさせウィルスに感染させる行為が流行っているらしい(まぁ想定の範囲内だが)。そこで、短縮URLを展開できるrubyスクリプトをちょちょっと作ってみた。perl -MLWP::UserAgent -lE \ 'say LWP::UserAgent->new->head(shift)->request->uri' \ http://j.mp/dankogai id:amachangが昔こさえてくれたこの短縮URLもhttp://blog.livedoor.jp/dankogai/と展開されるはずです。 もう少しverboseに

    perl - 短縮URLを一行で展開する : 404 Blog Not Found
  • 日本の休日をPerlから求める | へぼい日記

    の休日には「国民の祝日」と「振替休日」と「国民の休日」ってのがあるのですがそれをPerlから求めるにはどうしたらいいんだという話。 #perl-casualでたずねたところいろいろと方法を教えてもらいました。 定番ネタだし、それ三週目といわれたりしたのでまとめてみますたという流れ。 そもそも休日というのは法律で決められるものなので、改正もあり最近だと2005年に改正があったりしています。 また、「国民の祝日」の中には「春分の日」や「秋分の日」のように翌年分を2月に官報で発表なんてものもあったりします。 やっかいですね。 CPANモジュールを使う Calendar::Japanese::Holiday 最終更新日が2007年なようですが use Calendar::Japanese::Holiday; say isHoliday(2011, 3, 21); say isHoliday(2

  • WWW::Mechanize のメモリ消費量について - make world

    WWW::Mechanizeは、通常の利用範囲ならば、メモリ消費量について問題にはならないと思う。 しかし、一回の実行で、数千回以上の URL アクセスを繰り返すようならば、WWW::Mechanize のメモリ消費量を考慮すべきである。考慮しないと、そのうちに Out of Memory エラーが発生して、異常終了してしまうからだ。 WWW::Mechanize でメモリ消費量が増加する理由 それは、WWW::Mechanize はアクセスした URL の接続履歴をずっと残す初期設定があるからだ。履歴をどれだけ残すかどうかの設定があるので、要件に応じて残す履歴の件数を制限するとよい。 WWW::Mechanize の初期設定 $mech->stack_depth($max_depth) Get or set the page stack depth. Use this if you're

    WWW::Mechanize のメモリ消費量について - make world
  • Disk I/Oの使用率を監視するワンライナー - kazuhoのメモ置き場

    iostat -x の %util を監視してしきい値を超えたらアラートメール飛ばしたいなぁと思って crontab 書いた。こんな感じ。 */5 * * * * perl -wle 'my $s = `/usr/bin/iostat -xk /dev/sd[abc] 270 2 | tail -4`; print $s if $s =~ m{\s(?:[0-9]{3}|[5-9][0-9])\.[0-9]+$}m'ポイントは、 iostat の後ろから2つ目の引数がサンプリングを行う秒数 tail で デバイス数+1 することで、最後のサンプルを取り出す 正規表現で50%以上だった場合に標準出力に iostat の結果を出す=メール送信

    Disk I/Oの使用率を監視するワンライナー - kazuhoのメモ置き場
  • 移転しました

    移転しました

  • Re: Perlスクリプトの一行目には何と書くべきなのか - Islands in the byte stream (legacy)

    Re: Perlスクリプトの一行目には何と書くべきなのか もしCPAN形式でスクリプトを配布するなら、それは#!/usr/bin/perlないし#!perlとするべきで、env(1)を使うべきではないと思います。 CPAN形式のディストリビューションでは、インストールするスクリプトのshebang行をインストール直前に修正し、正しいパスに書き換えてくれます。ただし、このルーチン*1はいまのところenv(1)を認識してくれません。つまり、env(1)を使った場合、インストールに使用したperlと実際に実行されるperlが一致するとは限りません。perlを一つしかインストールしていないシステムなら、これでも問題なく動きます。しかし最近では、システムにインストールしてあるperlには触らず、アプリケーション用のperlを別途perlbrewなどでインストールしてそちらを使うということもよく行われ

    Re: Perlスクリプトの一行目には何と書くべきなのか - Islands in the byte stream (legacy)
  • perl - でWindows用のzipファイルをUnixで作る : 404 Blog Not Found

    2010年09月06日23:00 カテゴリLightweight Languages perl - でWindows用のzipファイルをUnixで作る 何度目の車輪の再発明かわからないけど、見つからなかったものは見つからなかったので。 Windowsで文字化けしないZIPファイルをMacで作る : ライフハッカー[日版] ezip.pl 新規に作成する場合は、こちら。 #!/usr/bin/env perl # # $Id: ezip.pl,v 0.1 2010/09/06 13:52:00 dankogai Exp dankogai $ # use strict; use warnings; use Archive::Zip qw/:ERROR_CODES/; use Getopt::Std; use Encode; use Unicode::Normalize; # to handl

    perl - でWindows用のzipファイルをUnixで作る : 404 Blog Not Found
  • 豆知識 - 知っておくと役に立つ - Perl入門ゼミ

    Perl › 豆知識 知っておくと何かとPerlが使いやすくなったり、読みやすくなるかもしれないことをいろいろと追加していきます。 BEGIN BEGINはコンパイルのときに実行するということをあらわします。 BEGIN { # コンパイルのときに実行したい文 } require requireはuseと似ていますが実行時にモジュールを読み込むことと、importメソッドを自動的に実行しないところがことなります。 use File::Basename 'basename'; # 上と同じ意味 BEGIN { require File::Basename; File::Basename->import('basename'); } 動的にモジュールを読み込みたい場合はrequireを使用することがありますが、一般的な用途ではuseで統一するのがわかりやすいでしょう。 local localは

    豆知識 - 知っておくと役に立つ - Perl入門ゼミ
  • 適当なscriptでは use autodie; する - tokuhirom's blog

    chdirのときもエラー処理は必須ですな〜自分で使うスクリプトだからええ加減な書き方してた〜反省 #ubuntu #perl http://twitter.com/mukumaru/status/20694618336 perl5.10.1 以後では autodie.pm が標準添付されているので、それを利用するとよい。 % perl -E 'use autodie; chdir "/foo"' Can't chdir('/foo'): No such file or directory at -e line 1こんなかんじ。use strict; use warnings; につづけて use autodie; と書くだけ。 使い捨てスクリプトでは use autodie; しておくと、いちいち組み込み関数のエラー処理かかなくていいので便利。

  • perlのワンライナーで使えそうなのをいくつか - Webtech Walker

    最近ちょっとしたことはperlのワンライナーでやるので便利そうなのを抜き出してみる。必要に応じてzshの関数とかaliasにしたりとか。ちなみにperlのワンライナーといえばsugyanなのできっともっと便利なのをいくつも紹介してくれるはずです。 画像をbase64にエンコード $ perl -MMIME::Base64 -0777 -wne 'print encode_base64($_)' < file HTMLにdataスキームで画像埋め込むときとか、出力を改行したくないときはencode_base64の第二引数に空文字を渡す。 $ perl -MMIME::Base64 -0777 -wne 'print encode_base64($_,"")."\n"' < file 画像のリサイズ $ perl -MImager -se 'Imager->new->read(file=>$f

    perlのワンライナーで使えそうなのをいくつか - Webtech Walker
  • おそらくはそれさえも平凡な日々: モダンなPerlを「読む」上で覚えておくとよい構文 第1回(?)

    Perl学習者がある程度Perlに慣れてくると、他の人の書いたコードを読む機会も増えてきます。そこでつまづく人は多いのではないでしょうか。かく言う私自身がその一人です(笑) モダンなPerlはDSL(黒魔術?)的な書き方をしている部分も多く、雰囲気として処理内容をつかみやすいのですが、逆に文法的に構文を理解するのが難しいことも多いです。 「知っている人には当たり前、知らない人には黒魔術」 Perlにはそういうのが多いので、そういったところで悩んでいる人も多いのではないかと思い、このエントリーを書いてみることにしました。気が向けば続きも書きます。間違っている部分もあるかと思うので、ブクマコメ等でご指摘いただけると助かります。 日の目標とサンプルコード 裸のワード(bareword)は怖くない encode cp932 => $str; sub PI(){3.1415926535} てことで

  • めんどうなのでディスク容量監視をワンライナーでcrontabに書いた - kazuhoのメモ置き場

    15 3 * * * perl -wle 'my $s = `/bin/df -k`; print $s if $s =~ m{^/dev/.* (9[0-9]|100)\%}m'df に限らず、コマンドの結果を正規表現で比較して問題があったらprint、ってのはcrontabで監視する時の基的なイディオム要出典。もちろん、backquoteじゃなくてパイプで繋いでもいい。

    めんどうなのでディスク容量監視をワンライナーでcrontabに書いた - kazuhoのメモ置き場