タグ

programmingとperlに関するstealthinuのブックマーク (51)

  • Announcing Perl 7

    Announcing Perl 7 Jun 24, 2020 by brian d foy image credit: Darren Wood, “7”, on Flickr. This morning at The Perl Conference in the Cloud, Sawyer X announced that Perl has a new plan moving forward. Work on Perl 7 is already underway, but it’s not going to be a huge change in code or syntax. It’s Perl 5 with modern defaults and it sets the stage for bigger changes later. My latest book Preparing f

    Announcing Perl 7
    stealthinu
    stealthinu 2020/06/25
    Perl7は現行の5.32の別名と考えれば良さそうでPerl7として継続される。Perl6となるはずだったものはRakuという別の言語名となっている。
  • Perl の正規表現リテラル中の変数展開を読む

    Perl の正規表現リテラル中の変数展開では、文法上、 解釈にあいまいさが生じることがあります。 この文章では、Perl インタプリタのソースコードから、 実装上でどのようにあいまいさが解決されるのかを説明します。 更新履歴 2008-06-05: 公開 Perl の判断 Perl では、文字列リテラルや正規表現リテラルの中で変数展開を行えます。 use Test::More tests => 2; my $name = 'Alice'; $_ = "My name is $name"; is($_, 'My name is Alice', '$name として Alice が展開される'); s/$name/Bob/g; is($_, 'My name is Bob', 'Alice が Bob に置き換えられる'); しかし、正規表現リテラルのなかで配列の要素を展開する際には、 [ 〜

    stealthinu
    stealthinu 2018/03/28
    perlでなんで$hoge[1]と$hoge[001]で動作の違いが出るのこれでわかった。そしてこれは${hoge[1]}とブレース使うべきというのがよくわかった。シェルもそうだけどperlも気をつけよう。
  • 非エンジニアにこそ本っ当に読んでほしい技術書9冊 | みんなのスタンバイ

    stealthinu
    stealthinu 2016/02/26
    えええ!?Perlがすごい上位でびっくり。というかSwiftとObj-Cが低いのが不思議… あとアセンブラが最下位ってなんで??一番技術力必要だろうに。
  • Tips (CGI, Perl, Unix and etc.)

    Tips 目次 Tips (CGI&SSI) ブラウザの表示を変化させない CGI スクリプト(Status: 204 No Content) 他の URI (URL) にジャンプする CGI スクリプト(Location フィールド) CGI のタイムアウトおよびブラウザの中断 CGIスクリプト中で重い処理をバックグランド実行 サーバによるタイムアウトを回避 サーバによるタイムアウトを回避&重い処理の保護 SSI における HTML 出力の中断 CGI出力内容のコピーをファイルに出力 CGIによるブラウザでのダウンロード POST のサイズ制限 Content-Encodig による gzip 圧縮 Tips (Perl) flock の使い方 排他制御 実効 UID の切替え perl の setuid スクリプト perl の system、exec、パイプ fork, system

    stealthinu
    stealthinu 2016/01/05
    perlのCGIで非常に時間がかかる処理をさせるような場合にSIGPIPEで死なないようにforkしてそっちで処理を継続させるサンプル。
  • 第6回 UNIXプログラミングの勘所(3) | gihyo.jp

    ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI

    第6回 UNIXプログラミングの勘所(3) | gihyo.jp
    stealthinu
    stealthinu 2016/01/05
    perlのCGIなどでクライアントの接続が切れている状況で出力しようとするとSIGPIPEが発生してその時点でperlが死ぬ。$SIG{PIPE}を設定するか時間掛かる処理はforkしておく。
  • Encode::JP::Mobile - 日本の携帯電話向け Shift_JIS (CP932) / UTF-8 エンコーディング - metacpan.org

    NAME Encode::JP::Mobile - 日の携帯電話向け Shift_JIS (CP932) / UTF-8 エンコーディング SYNOPSIS use Encode; use Encode::JP::Mobile; my $bytes = "\x82\xb1\xf9\x5d\xf8\xa0\x82\xb1"; # NTT DoCoMo 絵文字を含んだ Shift_JIS バイト列 my $chars = decode("x-sjis-imode", $bytes); # \x{3053}\x{e6b9}\x{e63f}\x{3053} use Encode::JP::Mobile ':props'; if ($chars =~ /\p{InDoCoMoPictograms}/) { warn "It has DoCoMo pictogram characters!"; }

    stealthinu
    stealthinu 2015/11/04
    perlで携帯の絵文字を含んだ文字列扱うにはEncode::JP::Mobile使えば内部UTF8に変換できるっぽい。
  • Perlで作るモバイルサイトのコツ:第1回

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Perlで作るモバイルサイトのコツ:第1回
    stealthinu
    stealthinu 2015/11/04
    perlで携帯のキャリア判別はHTTP::MobileAgentで行うのが良いっぽい。
  • Shift_JIS に含まれない文字をエスケープ (Jcode.pm編)

    しかし HTML での利用においては、 最近のブラウザは &#xHHHH; 形式で Unicode のコード(UCS2)を指定すると、 クライアント側に該当フォントがあれば、表示できるようになります。 ページでは、Perl+Jcode.pm を使って その自動変換を行うパッチをご紹介します。 更新履歴 2006/11/05 - Encode::FB_XMLCREF は、Encode の特定のバージョン(2.08~2.12)で不具合が発生します。 Encode::FB_XMLCREF でなく Encode::XMLCREF を利用するように、記述を修正しました。 2005/06/20 - Jcode.pm 2.00 に合わせてパッチ適用手順を変更しました。 2005/02/18 - Perl 5.8.1以降+Jcode.pm 1.99以降に関する記述を追加しました。 2005/02/17

    stealthinu
    stealthinu 2015/11/02
    Encodeだとfrom_to関数使うと直接UTF8をCP932エンコードに変換できる
  • perl utf8→sjisで文字化け - (゚∀゚)o彡 sasata299's blog

    2008年07月25日23:32 Perl perl utf8→sjisで文字化け 以前のEncodeモジュールの話に関連した話なんですが、 今日、ある症状が出て困っていました。utf8を、sjisにした際に「〜(波ダッシュ?)」や「−(全角のマイナス)」が文字化けしてしまったのです(;´Д`) とりあえずその場は「Unicode::Japanese使えば大丈夫だよ」と教えていただいて対処したんですが、どうにも府に落ちなくてちょっと調べてみました。そしたらありましたよ、解決策が.。゚+.(・∀・)゚+.゚ もともと、 encode('shift_jis', decode_utf8($str)); こんな感じでutf8からshift-jisに変換していました。これを encode('cp932', decode_utf8($str)); とすることで、無事文字化けすることなく変換できました。

    stealthinu
    stealthinu 2015/11/02
    Encodeだとdecode_utf8で内部文字エンコーディングUTF-8に変換後cp932で外部出力用に変換すれば丸囲み文字とかが化けなくなる
  • 第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp

    Encodeを使っても文字化けするとき Encodeは特定のエンコーディングにしたがって配列されたバイナリを「文字列」に置き換えるためのモジュールですが、かならずしもすべてのエンコーディングがあらゆるバイナリの組み合わせに対応しているわけではありません。 たとえば、「⁠シフトJIS」環境における機種依存文字の例としてよく取り上げられる丸付き数字をEncodeのお作法通りにdecode、encodeする場合、「⁠シフトJIS」だからと思って安易にshiftjis系列のエンコーディングでdecodeしてしまうと、丸付き数字のマッピングデータがないため「?@」のように文字化けを起こしてしまいます。 use strict; use warnings; use Encode; my $binary = pack('C*', 0x87, 0x40); # ①; my $string = decode(

    第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp
    stealthinu
    stealthinu 2015/11/02
    perlでSJISの丸囲み数字が「?@」とかに化けるのはcp932でデコードすれば良い。
  • perlのUTF8フラグの扱い方がやっとわかってきたので、まとめ。 - あそことは別のはらっぱ

    この2日間*1ほど、EUC-JPなデータおよびスクリプトをUTF-8なものに変更する作業などしていたわけで。 EUC-JPと言っても、実際には丸付き数字とかそういうのが山ほど入っている、綺麗とはいえない内容で。これをつつがなくUTF-8に変更するのに一苦労。 過去にこの辺を書いたおかげで、それに気が付くのに時間はかからなかったけど、それでもJcode.pmとEncode.pmの挙動の違い(というか、使い勝手の違い)には泣かされた。 おまけに、元のスクリプト、use strictもやってなかったりする、いい加減古いものだったりしたし。 ということで、はまった内容をメモっておくことにする。 先に結論だけ書いておくと 機種依存文字が入っているときは、EUCJPMSとCP932が必須 入力はすべてdecodeして、処理したら全てencodeして出力。内部コードは絶対に内部にとどめる。 少なくとも1

    perlのUTF8フラグの扱い方がやっとわかってきたので、まとめ。 - あそことは別のはらっぱ
    stealthinu
    stealthinu 2015/11/02
    今さらperlでSJISの丸囲み数字をごにょごにょしたいけどうまくいかないという相談で調べてて参考になったエントリー
  • Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。

    Perl6 には Grammar という機能があるのですが、これがまた凄いんです。スキャナとトークナイザと処理系が引っ付いている様な物がデフォルトで提供されているんです。 通常はこれらが別の機能として提供されており、プログラミング言語を実装する過程でデータの受け渡しがシームレスではなく、実装を変えたりするのが非常に面倒だったりします。しかしこれが Perl6 という一つの処理系の中で提供されてしまっている為、来であれば数百ステップくらい掛かってしまう俺言語のコードが50ステップ程度で書けてしまいます。 use v6; grammar SyoboiScript::Grammar { token num { <[0..9]>+ } token ident { <[a..z]>+ } token op { '+' || '-' || '*' || '/' } token exp { <iden

    Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。
    stealthinu
    stealthinu 2015/10/20
    perl6のgrammarクラス使うとすんごく簡単に自前スクリプトを作れるみたい。1画面分で書けるとは…
  • Matz「Rubyの一番悪い点はPerlの影響」!? 次世代の言語の話も盛りだくさん #yapcasia #yapcasiaA

    まとめ YAPC::Asia Tokyo 2015 #yapcasia 全セッション総まとめ 前夜祭から大盛り上がりの様子を完全まとめしていきます。実況ツイートはトラック毎のハッシュタグ付き推奨! #yapcasia / 全体 #yapcasiaA / トラックA (国際会議場) #yapcasiaB / トラックB (701-702) #yapcasiaC / トラックC (703) #yapcasiaD / トラックD (605-606) #yapcasiaE / トラックE (607-608) #yapcasiaDinner / 懇親会 (レセプションホール) 16514 pv 94 39 users 57

    Matz「Rubyの一番悪い点はPerlの影響」!? 次世代の言語の話も盛りだくさん #yapcasia #yapcasiaA
    stealthinu
    stealthinu 2015/08/21
    YAPCでのまつもとさんの講演まとめ。長いけどすっごい面白かった。Streemの思想も面白い。
  • 正規表現 - 2部 Perl言語仕様 - [SMART]

    正規表現の概要 正規表現は、Perlの中で最も重宝する機能のひとつです。正規表現にはテキスト処理のための様々な機能があり、文字列の中から特定のパターンを見つけ出したり、置換したりすることができます。 正規表現の基的な使用方法 たとえば、$strという変数に格納したデータの中から、「A」で始まって途中は何があるかわからないが最後が「E」という文字列を探したい場合、次のように記述することで、条件にマッチする文字列を見つけることができます。 $str =~ /A.*E/; 上記では、ドット( . )が改行以外の1文字を表し、アスタリスク( * )がその任意の文字の0回以上の繰り返しを意味します。このように、正規表現において特殊な働きを持った文字を正規表現演算子、またはメタ文字と呼びます。また、=~ はパターン結合演算子と呼ばれ、「左辺の値から右辺の値を検索する」という意味があります。 正規表現

    正規表現 - 2部 Perl言語仕様 - [SMART]
    stealthinu
    stealthinu 2015/05/18
    「(?:…」の文法を知らなくて「?」の前にはなんか文字いるんじゃないの?「:」は普通にマッチするはずだよな??とかなった。かっこでくくったものを$1とかで覚えさせないための表記なのね。
  • perlの波ダッシュの文字コード変換のまとめ - (゚∀゚)o彡 sasata299's blog

    2009年02月22日22:31 Perl perlの波ダッシュの文字コード変換のまとめ perlの文字コード周りはなかなかカオスです。外部エンコードとか、perl内部での文字コードとか、UTF8フラグとか。UTF8フラグ?なにそれ?な人は、こことかここを見てみると良いかも。(・∀・) 基的には外部から入ってきた時点でdecodeして、出力時にencodeしてやれば全て解決するんですが、「〜(波ダッシュ)」と「−(全角マイナス)」だけは特別です。注意が必要なのはこの2パターン。 ① utf8⇔shift_jis ② utf8⇔euc-jp ①については以前、perl utf8→sjisで文字化けという記事で紹介しましたが、encode時に、'sjis'では無くて、'cp932'を指定すればOK。※「〜」とか「−」はsjisには含まれていない文字なのが原因。 今回紹介したいのは②の場合です

    stealthinu
    stealthinu 2013/10/29
    波ダッシュ問題「~」や「ー」がutf8→sjis変換で波ダッシュなどと扱われてうまくいかない件。utf8でtr/\x{ff5e}\x{ff0d}/\x{301c}\x{2212}/で全角に置き換える。
  • PSGI/Plack - [Perl Hackers Hub]

    連載では、第一線のPerlハッカーが回替わりで執筆していきます。記念すべき第1回は、WEB+DB PRESS誌ではVol.2から執筆しており、長らく連載も担当していた宮川達彦さんです。 はじめに PerlでWeb開発をするためのフレームワークは百花繚乱、人気を集めています。稿では、これらのフレームワークが共通して利用するためのインタフェース仕様であるPSGIと、そのエンジンとしての実装であるPlackを紹介します。 PSGIに至る道 PerlとWebアプリケーション開発の親和性 Perlは「インターネットのグルー(糊:のり)言語」とも言われ、CGIによる開発がメインだった1990年代から、Webアプリケーション開発に最も関わりのあるプログラミング言語の一つと言ってよいでしょう。2000年代に入っても、Ruby on RailsPHPなどの他言語からの影響も取り入れながら、Web開発

    PSGI/Plack - [Perl Hackers Hub]
    stealthinu
    stealthinu 2013/04/01
    今頃やっと、PSGI/Plackがなにかを理解した。
  • Data::Dumper - データをダンプする - Perl入門ゼミ

    Perl › モジュール › here Data::Dumperモジュールを使うと、ハッシュや配列などの変数の内容を見やすい形で出力することができます。またリファレンスを使用した複雑なデータ構造を見やすく出力することができます。 use Data::Dumper; # データをダンプ my $dump_string = Dumper $data; Dumper関数を使用するとデータを見やすい文字列に変換することができます。Dumper関数は出力を行わないことに注意してください。 画面に出力に出力したい場合は、print関数やwarn関数と組み合わせます。 print Dumper $data; warn Dumper $data; Data::Dumperのいくつかの例を紹介します。 スカラ変数を出力 スカラ変数を出力します。 my $name = 'kimoto'; print Dump

    Data::Dumper - データをダンプする - Perl入門ゼミ
    stealthinu
    stealthinu 2013/04/01
    perlでPHPのprint_r的な事が出来るツールData::Dumperの使い方。
  • Docker

    stealthinu
    stealthinu 2013/03/01
    perlでオブジェクトメンバーへの検査も行うuse fieldsを有効に使うための方法について。perlでMooseとかを使わない時のよりベターなOOP手法。
  • Perlの謎(その10)サブルーチンの呼び出し方 - 小池啓仁 ヒロヒト応援ブログ By はてな

    予告したサブルーチンの呼び出し方の謎です。 しかし、予告した割りには、上手くまとまらなかったのですが・・・以下のようになりました。 ◆ イントロ まず、Perlでのサブルーチンは関数と等価です。 そして、関数の呼び出し方には、『&』のファニー文字を付けたり、付けなかったり・・・。 また、関数名の後に『()』小カッコを付けたり、付けなかったり・・・。 またまた、『&』も『()』も付けなく、ベアワードになったりと・・・。 これらは、『組み込み関数やインポートしたモジュール関数』と『ユーザ定義関数』で意味が違ってきます。 なので、各々について対比して解説をしてみました。 尚、以下は、あくまでも私のコーディング方針で、強制的なものではありません。 ◆ 『&』ファニー文字について 組み込み関数やインポートしたモジュール関数は、『&』ファニー文字は付けない。 組み込み関数等に『&』を付けるとエラーにな

    Perlの謎(その10)サブルーチンの呼び出し方 - 小池啓仁 ヒロヒト応援ブログ By はてな
    stealthinu
    stealthinu 2013/02/18
    そういや昔は関数呼び出しで必ず「&」付けるようにしてたな。いつから付けないのが普通になったんだろう?あと自分はなるべく()でくくるようにしてるけどこれって最近の書き方ではない感じ?
  • あまつぶ: POPFile/LongToProblem

    長い To ヘッダのあるメールの処理に時間がかかる問題 問題が発生する環境・条件 To, Cc, From, Reply-To ヘッダに多くのメールアドレスが指定されている場合 関連スレッド [POPFile Help Forum - Heavy CPU usage on msg with huge "To" list] 原因 メールアドレスを抽出する部分の処理に時間がかかっている。 置き換えつつループをまわすのを改め、一括置き換えの中でループ内で行なっていた処理を行うようにしたところ、改善された。 検証用コード 以下のコードを実行すると、ループの場合は非常に長い時間がかかることがわかる。 #!/usr/bin/perl use strict; use warnings; my $test_to = 'foo@example.com, <bar@example.com>, '; use B

    stealthinu
    stealthinu 2011/12/28
    POPFileでアホみたいに長いToを抽出する処理の高速化について。whileで回すのと正規表現のeオプション使うのとではなんと200倍!も速度が違う…