タグ

perlとTipsに関するjamadamのブックマーク (11)

  • 使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual

    gfxと申します。 Perlは後方互換性を重視しているので、標準モジュールはめったに取り除かれる事がありません。しかしそれでも、いくつかのモジュールが将来的に取り除かれる見込みです。そのようなモジュールは使用しないほうがいいでしょう。また、取り除かれはしないものの、様々な理由から使用すべきでないモジュールもいくつかあります。今日は、そういった使うべきでないモジュールを紹介します。なお、このエントリの対象バージョンは5.8から5.14を想定しています。 さて、まずは取り除かれるモジュールです。現在のところ、以下の三つのモジュールが5.14でコアから削除される予定です。 Class::ISA Pod::Plainer Switch Class::ISAはクラス階層を直列化するモジュールですが、5.10以降はmroに取って代わられました。5.10未満のバージョン用にはMRO::Compatが用意

    使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual
  • sprintfで使用する引数を直指定する方法 - Unknown::Programming

    久々にPerl。いや、ほんと久しぶりよね。 printf '%d年%d月%d日', 2010, 12, 22; # 2010年12月22日 上記のような処理の時に、引数の数は変更せずに年を削って「12月22日」と表示したい場合、以下のようにすれば可能。 printf '%2$d月%3$d日', 2010, 12, 22; # 12月22日 「%」と「d」の間に「数値$」を追加することで使用する引数を直指定できる。上記の場合だと2番目と3番目の引数を使うという感じになる。 こんなsprintfの使い方なんて滅多なことではしないと思うけど、その滅多が来ちゃったので滅多ごめん。 滅多ごめん。 # ちなみにPHPでも可能。 参考:sprintf - perldoc.perl.org

    sprintfで使用する引数を直指定する方法 - Unknown::Programming
  • 構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found

    2010年09月22日21:30 カテゴリLightweight Languages 構造化テキストの間違ったエスケープ手法について 昨晩のtwitter XSS祭りは、ふだんもtwitter.comは使わない私には遠くの祭り囃子だったのですが、せっかくの自戒の機会なので。 Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について 正しいアプローチは、全てのルールを同時に適用することです。 これは残念ながら(おそらく)必要条件であっても十分条件ではありません。 こういう(かなりええかげんな)正規表現でtweetをparseしていたとします。 re_http = '(?:https?://[\\x21-\\x7e]+)'; re_user = '(?:[@][0-9A-Za-z_]{1,15})'; re_hash

    構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found
  • Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について

    昨日の Twitter の XSS 騒ぎは、まだ皆さんの記憶に新しいことと思います。いい機会なので、ツイートのような構造化テキストのエスケープ手法について触れておきたいと思います。 Twitter のメッセージは、単なる平文(プレインテキスト)ではなく、「@英数字」のような他のユーザーへの言及と「http://〜」のような URL を自動的にハイパーリンク化する構造化テキストです。 このような複数のルールをもつ構造化テキストを HTML 化する際には、どのようなコードを書けばいいのでしょう? まず「@〜」をリンク化してから、URL をリンク化すればいいのでしょうか? それだと、@〜 のをリンク化した A HREF タグの中の URL がさらにリンク化されていまいますね。 では、URL をリンク化してから @〜 をリンク化すればいいのでしょうか? それだと、@ を含む URL があった場合に

  • 豆知識 - 知っておくと役に立つ - 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入門ゼミ
  • Perlで日本語(ISO-2022-JP)メールを送信(まとめ) - kopug memo

    UTF-8で作成されたメール文をMIME::Lite及びEncodeを使用してメールを送信をする。 そこで問題となってくるのが下記の3点。 1.チルダ(全角)等の文字化け("〜 ‖ − ¢ £ ¬ ") 2.機種依存文字が含まれていた場合の対応 3.MIME::Lite で smtp送信する場合、Return-Pathが有効にならない 1.チルダ(全角)等の文字化け("〜 ‖ − ¢ £ ¬ ")に関する解決方法: これは有名らしいのですが、Encode::JPが採用している UnicodeConsortium の写像表 に問題があるとかで、 一部の文字が化けます。チルダとか。 しようがないので こんな風に対応しておきました。 my %map = ( "\x{ff5e}" => "\x{301c}", # 〜 (1-33, WAVE DASH) "\x{2225}" => "\x{201

    Perlで日本語(ISO-2022-JP)メールを送信(まとめ) - kopug memo
  • 知ってそうで意外と知られていないperlの小技 10選 - download_takeshi’s diary

    意外と知られていないperlテクってのが、意外とあるもんですね。 最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。 どれも最新のモダパ的なモノではないけども、知っておくと地味に便利かもしれないノウハウです。 中級レベル以上のperlユーザの人たちでも「お、こんなの知らなかった」というのもあるかもね。 複数項目でのソート よくエクセルなんかで「A列を降順、B列を昇順にして並び替え」みたいなことしますよね? perlで複数項目のsortではどうすればできるでしょうか? じつはとっても簡単。sortの次に続くブロックの中でorするだけです。 例えば以下のような4人の子供たちのデータを年齢順、体重順でソートしてみます。 use strict; my @data = ( { name => '太郎', age => 10, weight => 25, }, { name

    知ってそうで意外と知られていないperlの小技 10選 - download_takeshi’s diary
  • [perl]内部的に数値か文字かを判別する

    どうーでもいいーですよー。 どうでもいい話ー、聞いてください。 Perlというやつは一応内部的には数値か文字列かをちゃんと分けて変数の管理をしているのです。 でわ、現在ある変数が内部的に数値なのか?内部的に文字列なのか?判別しようと思ったらどうしますか? こうしてみます。 my @data = ( 100, # 100は内部的に数値 '200' # 200は内部的に文字 ); foreach my $d ( @data ) { if( ($d ^ $d) eq '0' ){ print $d . " = It's numeric\n"; } else { print $d . " = It's string\n"; } } 同じ変数同士を排他的論理和(^)すると、その変数が数値の場合は0になり、その変数が文字列の場合は空文字になるのです。 なぜかって?そりゃ同じ値同士で排他的論理和したら必

    [perl]内部的に数値か文字かを判別する
  • 株式会社VOYAGE GROUP

    株式会社VOYAGE GROUPは、2022年1月、株式会社CARTA HOLDINGSと合併いたしました。 関連リリース:CARTA HOLDINGS、基幹グループ会社のCCIおよびVOYAGE GROUPと統合へ https://cartaholdings.co.jp/news/20210513_01/ CARTA トップへ

    株式会社VOYAGE GROUP
  • 現代的なPerlの記述方法一覧 - Perl入門ゼミ

    Perl › here Perl5.8以降における標準的なPerlの書き方を解説します。 インターネットで検索するとPerl4のころの古い記述がたくさんあります。また書籍などの多くもPerl4の記法で書かれています。Perl4の記法は複雑になりやすく間違いを生みやすいのでこれからPerlを書く人はPerl5の現代的な記法で記述することを強くお勧めします。 strictプラグマとwarningsプラグマ (必須) strictプラグマとwarningsプラグマを有効にします。 use strict; use warnings; use strict;とuse warnings;の2行はスクリプトの最初に必ず記述してください。これらはPerlの文法チェックを厳しくするためのものです。面倒だという軽い気持ちでこれを記述しないと後々当に面倒なことになります。 use strict;とuse wa

    現代的なPerlの記述方法一覧 - Perl入門ゼミ
  • 第18回 local::lib:ふだんと違う環境でPerlを使う | gihyo.jp

    いつでも理想の環境を使えるとは限りません 「弘法筆を択ばず」ということわざもありますが、なんであれ手になじむまで使い込んだ道具を持っている人は、環境が変わってその道具が使えなくなるとやはりいらいらするものです。 Perlの場合もそう。日頃から自分の必要や興味に応じてがんがんCPANモジュールをインストールしていると、何らかの事情でまっさらに近いPerlを使わなければならなくなったとき、途方に暮れます。来のコードを書き始める前に、モジュールのインストールだけで一日潰してしまった経験をお持ちの方も少なくないことでしょう。 今回は、そんな「ふだんと違う」環境でもなるべくストレスなくPerlを使えるようにするためのモダンな努力をいくつか紹介してみます。 PERL5LIBという環境変数を活用する Perlはディストリビューションに同梱されているコアモジュールを保護するために、CPANからインストー

    第18回 local::lib:ふだんと違う環境でPerlを使う | gihyo.jp
  • 1