タグ

perlとTipsに関するbabydaemonsのブックマーク (17)

  • perl - open my $fh, "comand |"; # はモダンじゃない : 404 Blog Not Found

    2009年02月10日01:00 カテゴリLightweight Languages perl - open my $fh, "comand |"; # はモダンじゃない モダンPerl入門 牧大輔 「モダンPerl入門」発売記念ということで、同書を補足するentryを。 同書でちょっと残念だったのが、[5.2 外部コマンドの実行]。あまりモダンではないのだ。 P. 141 system("/sbin/wget", "http://example.com"); これはいいのだが、以下がちょっとまずい。 my $output = `/bin/ls tmp`; open(my $fh, '| cat -v'); これ、何がまずいか、というと、コマンド実行の際に/bin/shを使ってしまうのだ。そのおかげでcommand < from > to 2&>1のようなリダイレクトも使えるなどの利点もあ

    perl - open my $fh, "comand |"; # はモダンじゃない : 404 Blog Not Found
  • perl - LWP::UserAgentで進捗表示しつつダウンロード : 404 Blog Not Found

    2008年11月21日00:15 カテゴリLightweight Languages perl - LWP::UserAgentで進捗表示しつつダウンロード 後のデザートとして手頃なサイズの問題だったので。 Ruby Net::HTTP で進捗表示しつつダウンロードのメモ - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech #!/usr/local/bin/perl # # $Id: lwp-callback-example.pl,v 0.1 2008/11/20 15:16:48 dankogai Exp dankogai $ # use strict; use warnings; use LWP::UserAgent; use File::Basename; my $uri = shift || die "$0 http://example.com/bi

    perl - LWP::UserAgentで進捗表示しつつダウンロード : 404 Blog Not Found
  • 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

  • perl - stat()、-X 演算子、そして _ ファイルハンドル : 404 Blog Not Found

    2008年05月12日13:30 カテゴリLightweight Languages翻訳/紹介 perl - stat()、-X 演算子、そして _ ファイルハンドル こういった場合のTipです。 ファイル演算子「 -s 」で、ファイルサイズを取得する。 - サンプルコードによる Perl 入門 if( -f $file ){ my $file_size = -s $file; print "$file のファイルサイズは、$file_size バイトです。\n\n"; } else{ print "$file は、存在しませんでした。\n\n"; } _ ファイルハンドル 実は、-X演算子は、その演算子に期待された結果を返すだけではなく、その他のファイル情報を特殊ファイルハンドル_にセットします。これを使うと、上のコードは if( -f $file ){ my $file_size =

    perl - stat()、-X 演算子、そして _ ファイルハンドル : 404 Blog Not Found
  • perl - @_ は参照である : 404 Blog Not Found

    2008年05月12日18:15 カテゴリLightweight Languages perl - @_ は参照である これでも正解ではありますが、perlの場合もっと簡単な方法があります。 各言語間の参照と値渡し - @author pyridoxin sub swap { my ($x , $y) = @_; $$temp = $$y; $$y = $$x; $$x = $$temp } [codepad] sub swap { my $tmp = $_[0]; $_[0] = $_[1]; $_[1] = $tmp; } my ($a, $b) = (1, 2); print "\$a = $a, \$b = $b\n"; swap($a, $b); print "\$a = $a, \$b = $b\n"; これは、Referenceが存在しなかったPerl 4以前からの仕様です。

    perl - @_ は参照である : 404 Blog Not Found
  • Loading...

    babydaemons
    babydaemons 2010/05/28
    標準出力のファイルハンドルをautoflushする定石
  • 一次元配列同士の比較のいろいろなやり方 - harupiyoの日記

    問題 @a = (1,2,3); @b = (1,2,3); のような配列があったとして、これらの中身が同じ(@a = @b) であることを確認したいと思います。 細かい条件として、値は正の数字のみ(負はない、)で並び順は気にしない、かつ同じ番号はないという事にします。 かんたんに考えると、次の二つの条件を満たせればいいはずです。 二つの要素の数が同じであること 先頭から比較して、末尾までの各項目の内容が等しいこと 素直にコーディングすると... sub is_same($$){ my($a,$b) = @_; # (1)二つの要素の数が同じであること return 0 if @$a != @$b; # (2)先頭から比較して、末尾までの内容が等しいこと for (0..$#$a){ return 0 if $a->[$_] != $b->[$_]; } return 1; } というサブ

    一次元配列同士の比較のいろいろなやり方 - harupiyoの日記
  • 404 Blog Not Found:perl - Encode 入門

    2008年04月09日01:00 カテゴリLightweight Languages perl - Encode 入門 すでにOSCONでもYAPCでも、あちこちそちこちでこの基方針に関しては話したのですが、ここ 404 Blog Not Found でも改めて。 Perl で utf8 化けしたときにどうしたらいいか - TokuLog 改め だまってコードを書けよハゲ 入り口で decode して、内部ではすべて flagged utf8 で扱い、出口で encode する。これがすべてです!とにかくこの基方針をまもっていれば幸せになれます。ここでは、EUC-JPでエンコードされたファイル中の「小飼弾」「こがいだん」「コガイダン」「Kogai Dan」を正規表現で書き換えて標準出力にEUC-JPで出力するプログラムを例にとって説明します。 decode() then encode(

    404 Blog Not Found:perl - Encode 入門
  • おさかなラボ - [Perl]バッファのFlushを1行で安全に

    デフォルトのファイルハンドル(多くの場合STDOUT)のバッファをflush(バッファを強制出力)するのは$| = 1;として、print "";すればいいのだが、現在デフォルトのファイルハンドルとは違うファイルハンドルをflushしたい場合、select($file_handle);としてから$| = 1としなければならない。$|は元々何だったかも覚えておかないといけない。selectする前のファイルハンドルも元に戻さないといけない。実はいろいろすることがある。そのために取っておいた変数は掃除しないといけない。とするとコードはこうなる。 { my $old_fh = select($fh); my $old_dolcol = $|; $| = 1; print ""; $| = $old_dolcol; select($old_fh); } これを1行でかくとこうなる。

  • perl - use strict; # and be happy : 404 Blog Not Found

    2006年05月21日05:20 カテゴリLightweight Languages perl - use strict; # and be happy どうやら私のでは、啓蒙が全然足りなかったらしい。 Perl/CGI辞典 - 土井 毅さん 著 - にて use strict が推奨されていない件について - iandeth. p.104 strict プラグマは、Perlスクリプトでの記法を厳密にするためのプラグマです。 (中略) これにより、宣言の曖昧な変数への参照を発見できます。 [参考] strict プラグマは厳密すぎるため、通常のプログラミングではあまり使用しません。 ... orz このが20世紀に出たというのであれば驚かないけど、今年に出たというのは、Perl5 Porterとしてもショックである。 しかし、確かにuse strict; # or dieという姿勢だけ

    perl - use strict; # and be happy : 404 Blog Not Found
    babydaemons
    babydaemons 2010/03/01
    use strict;は常識だろw gcc -Wallみたいなもんだw
  • Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming

    正直言いますと、個人的には定数って殆ど使わないんですよね。 昔はちょこちょこ使ってたんですが、最近は定数となりうる物は基的にYAML等外部ファイルに持たせて変更可能にすることが多いのでまったく使ってません。 ですがそれでもPerlで定数を使いたい時にはどーすんの?っていう時のために軽くここにまとめておきます。 言わずもかなPerl5.8にはconstantという定数を定義できる標準モジュールがあります。 use strict; use constant PI => 3.14; # 表示 print PI; # 3.14 # 上書きしようとすると・・・ PI = 3; # Can't modify constant item in scalar assignment とこのように上書きしようとするとエラーを吐いて死にます。 しかも実行時ではなく、コンパイル時にエラーを吐きます。 実はこのc

    Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming
  • The NeGi project ( IPv6 address change shell-script )

    IPv6のアドレスの文字列を整えたり、反転するためのシェルスクリプトです。 - 1章 スクリプトの概要 - IPv6のアドレスはIPv4ないアドレスの省略ルールがあります。 省略されたままでは文字列のチェックに不向きなので、シェルスクリプトを使って整えています。 1. IPv4/IPv6共にある省略ルール 使用していない桁の0は省く事が出来る。 例1)192.168.0.1 -> 192.168.000.001 例2)2001:240:6b0::10 -> 2001:0240:06b0::0010 使用される桁のバイト数が解れば、簡単に補完することが出来ます。 2. IPv6だけある省略ルール 連続する0ブロックは::で省略できる。 例)2001:240:6b0::10 -> 2001:0240:06b0:0000:0000:0000:0000:0010 デミリタである「:」の数をから「:

  • スクリプトをループさせるには?( perl) perlとシェルスクリプト

    スクリプトを定時実行させたいことがある。 通常はcrontabを使うのだけど、使えない状況も多い。 単にwhileやforでずっとループしていると、 「長時間動いているプロセスはkill!」 という場合もあると思う。 プロセスIDを変化させる為には自分から自分を呼んで制御を映せばいい。 でも、だからといって、単純に自分から自分を呼べばプロセスが開放されずにリソースをいつぶしてしまう。 で、コレを防ぐには今まではバックグラウンド実行すればいいかなと思っていたのだけど、 サーバ環境によってはプロセスが残ってしまう場合があるみたい。 というわけで、さっき思いついたのだけど、 呼び出しもとのスクリプトをkillしてしまえばどうだろうか? というわけで考えてみた。 意外とうまくいった。 # 自分のPID $pid=$$; # 自分自身 $script="./loop.pl"; # 引数を読み取り

  • Let'sプログラミング

    Let'sプログラミングでは初心者の方を対象にJavaPythonPHPRubyなど色々なプログラミング言語の解説を行っています。 Java Java入門 これからJavaを使ったプログラミングの習得を目指している方を対象としたチュートリアルです サーブレット(Servlet) / JSP入門 サーバサイドで動作するアプリケーションの作成方法 Androidプログラミング入門 モバイル向けプラットフォーム Android で動くアプリの作成 Swingを使ってみよう GUIを使ったJavaアプリケーションの作成で使用するSwing入門です Eclipse入門 開発環境として広く使われているEclipseのインストールと活用法 Javadocの記述 ソースコードからHTML形式の仕様書を生成します Apache POIでExcelを操作 Excelファイルの作成・操作

    Let'sプログラミング
  • フリーソフトで作るインタラクティブページ KENT WEB

    掲示板システム ブログ・日記系 チャットシステム アクセスカウンター メールプログラム (フォームメール等) パスワードアクセス制限 (会員制ページに) データ収集・加工・検索 ショッピングカート (ネットショップ向け) バラエティ系 (ゲーム・電子アルバム) ユーティリティツール サポートコーナー (設置の質問はこちら) よく頂く質問(FAQ) 過去ログ検索

  • 一足早く「Plagger」の便利さを実感してみよう − @IT

    2006年初頭から「Plagger」という技術が、一部で話題になりました。まだまだ知名度が低い「Plagger」ですが、便利でカスタマイズ性が高いものなので、2007年では爆発的に流行するかもしれません。豊富なプラグインを自在に組み合わせ、欲しい情報を収集し、加工して出力するPlaggerの仕組みや使い方を紹介します。 1. 何でもできる? Plaggerの正体に迫る 今回は話題のPlagger(プラガー)を取り上げます。 この連載を読んでいる読者の皆さんは、ネットワーク技術や知識に興味を持っている人が多いでしょうから、「Plagger」という単語は一度は耳にしたことがあるでしょう。しかし、Plaggerという言葉を聞いたことはあっても、いったいどんなものかピンと来ない人もいるかもしれません。今回はPlaggerがどういった働きをするか? その動きの仕組みなどを中心に紹介していきます。 ●

    一足早く「Plagger」の便利さを実感してみよう − @IT
  • Perlメモ

    複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに

    Perlメモ
  • 1