Fork me on GitHub

2010/09/02

はてな
えーっと、IDE使ってません。ごめんなさい。
PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。
私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。

で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。

perldoc.vim

perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。
そこで使ってるのがid:secondlifeさんが書いたperldoc.vim

hotchpotch's perldoc-vim at master - GitHub

Perldoc plugin for vim

http://github.com/hotchpotch/perldoc-vim
ドキュメントを引くにはPerldocコマンドを使います。関数openのドキュメントを引くには
:Perldoc -f open
とします。またモジュールAcme::Oppaiのドキュメントを引くには
:Perldoc Acme::Oppai
と実行します。 このスクリプトの良いと思う点は、補完が効くことです。「:Perldoc Acm」くらいまでタイプしてtabを押すと、「Acme::Oppai」や「Acme::Hidek」が補完されます。

ref.vim

もう一つ、同じ様にperldocが引けるプラグインとしてthincaさんが書いたrefがあります。
thinca's vim-ref at master - GitHub

Integrated reference viewer.

http://github.com/thinca/vim-ref
こちらはperldocに限らず
  • alc
  • erlang
  • man
  • perldoc
  • phpmanual
  • pydoc
  • refe
といったドキュメントを開く事が出来ます。ドキュメントを引くには
:Ref perldoc -f open
:Ref perldoc Acme::Oppai
等と実行します。
perldoc-vim
こちらも補完が効きますが、refはモジュール検索の際、あり得るモジュール全てが補完されてしまう為、ネームスペースにわんさかモジュールがあると少しモタつきます。なので私はperldoc.vimを使ってます。

追記
thincaさんから某所でコメント貰った。
let g:ref_perldoc_complete_head = 1
でそれっぽい事出来るらしい。

perlcompletion.vim

Perlは結構(かなり?)文法制限の緩い言語だと思ってますが、これが災いしてかIDE等でPerlの入力補完が出来る物は殆どありません。そんな中c9sさんがVimのomni補完でPerlの入力補完をしてくれるスクリプトを書いてくれています。
c9s's perl-completion.vim at master - GitHub

perl omnicompletion for vim (including base class function compleltions .. etc)

http://github.com/c9s/perl-completion.vim
これ、ぜひ実際に試して欲しいのですが
use Acme::O
までタイプして<c-x><c-o>(CTRL-x CTRL-o)をタイプすると
perl-completion-vim1
どどーーーん!
さらに
perl-completion-vim2
Moooooooooooooooooooseな補完や
perl-completion-vim3
変数の補完。そして
perl-completion-vim4
モジュールのメンバまで補完してくれます。キャーすてきー!
すばらし過ぎます。ちなみにこのperl-completion.vimのwin32対応と、上で紹介したperldoc.vimの補完部分を担当させて頂きました。

2010年はPerlが熱い!そう思ってます。ぜひインストールして活用して見てください。200倍とは言い過ぎかもしれませんが、間違いなく2倍にはなりますよ。

初めてのPerl 第5版 初めてのPerl 第5版
Randal L. Schwartz
オライリージャパン / ¥ 3,780 (2009-10-26)
 
発送可能時間:在庫あり。


モダンPerl入門 (CodeZine BOOKS) モダンPerl入門 (CodeZine BOOKS)
牧 大輔
翔泳社 / ¥ 2,940 (2009-02-10)
 
発送可能時間:在庫あり。

Posted at 00:15 in ソフトウェア::lang::perl
Tagged as: perl, vim
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2010/08/13

はてな
MSVCやMinGW32、Cygwin、BorlandC++などWindowsのCコンパイラについて一般的に嗜む程度の知識は持っていて、UNIXもある程度さわれて、Perlも少し触れるかなぁという(我ながら浅はかな)「つもり」でいたので、「CPANモジュールDevel::CheckLibのメンテナンスを誰か引き受けて欲しい」と仰るDavid Cantrellさんの意思を受け、Devel::CheckLibのコメンテナを引き受けました。

至らないかと思いますが、どうぞよろしく。

Posted at 23:32 in ソフトウェア::lang::perl
Tagged as: perl
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2010/03/24

はてな
スクリプトを書いたりしてる人にとってはkarmaなんかの評価値は励みになったりもします。
#!/usr/bin/env perl
use strict;
use warnings;
use URI;
use LWP::UserAgent;
use Web::Scraper;

my $user_id = shift || '103';

local $Web::Scraper::UserAgent = LWP::UserAgent->new;
$Web::Scraper::UserAgent->env_proxy;

my $account_url = "http://www.vim.org/account/profile.php?user_id=$user_id";
my $s1      = scraper {
  process '//td/a[contains(@href,"/scripts/script")]', 'karmas[]' => sub {
    my $e1     = shift;
    my $script_url = URI->new_abs( $e1->attr('href'), $account_url );
    my $s2     = scraper {
      process '//title',                         'name'  => 'TEXT';
      process '//td[contains(text(),"Rating")]', 'karma' => sub {
        my $e2 = shift;
        if ( $e2->as_text =~ /Rating ([^\s]*), Downloaded by ([^\s]*)/ )
        {
          return { rating => $1, downloaded => $2 };
        }
      };
    };
    my $staff = $s2->scrape($script_url);
    $staff->{url} = $script_url;
    $staff;
  };
  result 'karmas';
};
my @r = @{ $s1->scrape( URI->new($account_url) ) };

use YAML::Syck;
warn Dump @r;

# vim:set et:

---
karma: 
  downloaded: 25932
  rating: 1355/552
name: "calendar.vim - Calendar : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=52
---
karma: 
  downloaded: 783
  rating: 9/7
name: "which.vim - This is a unix like \"Which\" function. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=139
---
karma: 
  downloaded: 1054
  rating: 9/10
name: "XpMenu - Make vim use WinXP style menu. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=928
---
karma: 
  downloaded: 1884
  rating: 13/13
name: "VS like Class Completion - This script can complete member of cpp or java like Visual Studio. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=675
---
karma: 
  downloaded: 943
  rating: 16/9
name: "ftplugin for Calendar - This is a ftplugin for Calenar. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=683
---
karma: 
  downloaded: 1871
  rating: 92/37
name: "VimTweak - The tweaking dll for GVim.exe. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=687
---
karma: 
  downloaded: 980
  rating: -1/1
name: "VimSpeak - Speak selected text with MS Agent : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=692
---
karma: 
  downloaded: 960
  rating: 11/4
name: "FTP Completion - complete files in command line for ftp. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=963
---
karma: 
  downloaded: 183
  rating: 2/2
name: "Pit Configuration - pit configuration library for vim : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2404
---
karma: 
  downloaded: 1282
  rating: 81/24
name: "Gist.vim - vimscript for gist : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2423
---
karma: 
  downloaded: 805
  rating: 82/29
name: "GoogleReader.vim - vimscript for googlereader : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2678
---
karma: 
  downloaded: 252
  rating: 20/5
name: "FastLadder.vim - vimscript for fastladder : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2683
---
karma: 
  downloaded: 78
  rating: 0/0
name: "GoogleSuggest Complete - complete function using google suggest API. perhaps, you should input japanese w : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2948
---
karma: 
  downloaded: 833
  rating: 101/29
name: "ZenCoding.vim - vim plugins for HTML and CSS hi-speed coding. : vim online"
url: !!perl/scalar:URI::http http://www.vim.org/scripts/script.php?script_id=2981
ダメダメなスクリプトとか、もう消した方がいいかな...とか思った。
Posted at 00:18 in ソフトウェア::lang::perl
Tagged as: karma, perl, vim, web-scraper
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2010/03/02

はてな
タイトルは釣りです。
perlでは一般的にperldocを使って調べ物をする事が殆どですが
あれー、あのモジュールなんだっけ...IO:: 忘れた。
とか
IO:: の下辺りに似たモジュールあったよなー
なんて事が結構あったりするのですが(私だけかも)、今日もSys::SendfileのAuthorから「チミが送ってくれたpatchに対して僕が書いたtestがWindowsで通らないんだけど、何か分かるかい?」とメールが来てて
それ、以前ワテがp5pに送ったpatchの件ちゃいますやろか、確かIO:: ...えーっと...
ってなってしまった訳です。
なんか良くある事なので解決出来ないかなぁと思っていた所、見つけてしまいました。perldoc-completeを。
ap's perldoc-complete at master - GitHub

A bash completion helper for perldoc

http://github.com/ap/perldoc-complete
パスの通った所に perldoc-complete を置いて
complete -C perldoc-complete -o nospace -o default perldoc
を .bashrc に書いておくと...
# perldoc IO:: ここでタブ押す
AIO            File           Pipe           Socket         Wrap
AtomicFile     Handle         Poll           Socket::       WrapTie
Capture        Handle::       Pty            String         Zlib
Capture::      InnerFile      Scalar         Stringy        
CaptureOutput  Lambda         ScalarArray    Tty            
Compress::     Lambda::       Seekable       Tty::          
Dir            Lines          Select         Uncompress::  
# perldoc IO::
きたーーー!
常用確定しました。