<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ダメ出し日記 &#187; Perl</title>
	<atom:link href="http://www.sfo.jp/blog/archives/category/software/perl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sfo.jp/blog</link>
	<description>自称・独立&#38;OSS系(?) SE、さとうふみやすの日記。OSS テクノロジ(株)に勤務。</description>
	<lastBuildDate>Fri, 23 Oct 2009 08:10:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Perl ⇔ Python ⇔ Ruby</title>
		<link>http://www.sfo.jp/blog/archives/2008/06/perl-python-ruby.html</link>
		<comments>http://www.sfo.jp/blog/archives/2008/06/perl-python-ruby.html#comments</comments>
		<pubDate>Tue, 17 Jun 2008 13:18:07 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2008/06/perl-python-ruby.html</guid>
		<description><![CDATA[Python, Ruby でコーディングする際に躓いた Perl ならわかるんだけど… な事柄のハウツー。2008-06-18 更新。Special thanks to ミラクル組。

リンク


文字列操作の比較表:  [...]]]></description>
			<content:encoded><![CDATA[<p>Python, Ruby でコーディングする際に躓いた <q>Perl ならわかるんだけど…</q> な事柄のハウツー。2008-06-18 更新。Special thanks to ミラクル組。</p>

<h3>リンク</h3>

<p><dl>
<dt>文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++</dt>
<dd><a href="http://0xcc.net/blog/archives/000137.html">http://0xcc.net/blog/archives/000137.html</a></dd>
<dt>配列操作の比較表: Ruby, Python, JavaScript, Perl, C++</dt>
<dd><a href="http://0xcc.net/blog/archives/000043.html">http://0xcc.net/blog/archives/000043.html</a></dd>
</dl></p>

<h3>バージョン番号</h3>

<h4>コマンドライン</h4>

<p><dl>
<dt>Perl</dt>
<dd>
<pre class="terminal"><code>$ <kbd>perl -v</kbd>
This is perl, v5.10.0 built for x86<em>64-linux-gnu-thread-multi
<var>いっぱい</var>
$ <kbd>perl -V</kbd>
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
<var>もっといっぱい</var>
$ <kbd>perl -e 'print $],"\n"'</kbd>
5.010000
</code></pre>
</dd>
<dt>Python</dt>
<dd>
<pre class="terminal"><code>$ <kbd>python -v</kbd>
Python 2.5.2
$ <kbd>python -c 'import sys; print "%d.%d.%d" % sys.version</em>info[:3]'</kbd>
2.5.2
$ <kbd>python -c 'import sys; print "%d.%d" % sys.version<em>info[:2]'</kbd>
2.5
</code></pre>
</dd>
</dl>
<dt>Ruby</dt>
<dd>
<pre class="terminal"><code>$ <kbd>ruby -v</kbd>
ruby 1.8.7 (2008-05-31 patchlevel 0) [x86</em>64-linux]
</code></pre>
</dd></p>

<h3>標準モジュールパスの表示</h3>

<h4>コマンドライン</h4>

<p><dl>
<dt>Perl</dt>
<dd>
<pre class="terminal"><code>$ <kbd>perl -e 'print map {"$<em>\n"} @INC'</kbd>
/etc/perl
/usr/local/lib/perl/5.10.0
/usr/local/share/perl/5.10.0
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.10
/usr/share/perl/5.10
/usr/local/lib/site</em>perl
.
$ <kbd>perl \
-V:installsitearch \
-V:installsitelib \
-V:installvendorarch \
-V:installvendorlib \
-V:installarchlib \
-V:installprivlib</kbd>
installsitearch='/usr/local/lib/perl/5.10.0';
installsitelib='/usr/local/share/perl/5.10.0';
installvendorarch='/usr/lib/perl5';
installvendorlib='/usr/share/perl5';
installarchlib='/usr/lib/perl/5.10';
installprivlib='/usr/share/perl/5.10';
</code></pre>
</dd>
<dt>Python</dt>
<dd>FIXME: Python 2.5(?) には vendor-packages もあるみたい。
<pre class="terminal"><code>$ <kbd>python -c 'import sys; print sys.path'</kbd>
['', '/usr/lib/python25.zip', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/Numeric', '/usr/lib/python2.5/site-packages/PIL', '/var/lib/python-support/python2.5', '/var/lib/python-support/python2.5/gtk-2.0']
$ <kbd>python -c 'from distutils.sysconfig import get<em>python</em>lib; print get<em>python</em>lib()'</kbd>
/usr/lib/python2.5/site-packages
</code></pre>
</dd>
</dl>
<dt>Ruby</dt>
<dd>
<pre class="terminal"><code>$ <kbd>ruby -e 'puts $LOAD_PATH'</kbd>
</code></pre>
</dd></p>

<h3>モジュール検索パスの追加</h3>

<h4>環境変数</h4>

<p><dl>
<dt>Perl</dt>
<dd>
<pre class="terminal"><code>$ <kbd>export PERL5LIB='/site/lib/perl'</kbd>
</code></pre>
</dd>
<dt>Python</dt>
<dd>
<pre class="terminal"><code>$ <kbd>export PYTHONPATH='/site/lib/python'</kbd>
</code></pre>
</dd>
</dl>
<dd>
<pre class="terminal"><code>$ <kbd>echo '/site/lib/python' &gt;/usr/lib/python2.5/site-packages/site.pth</kbd>
</code></pre>
</dd>
</dl>
<dt>Ruby</dt>
<dd>
<pre class="terminal"><code>$ <kbd>export RUBYLIB='/site/lib/ruby'</kbd>
</code></pre>
</dd></p>

<h4>スクリプト</h4>

<p><dl>
<dt>Perl</dt>
<dd>
<pre class="code"><code>use lib '/site/lib/perl';
</code></pre>
</dd>
<dt>Python</dt>
<dd>
<pre class="code"><code>import sys
sys.path.append("/site/lib/python")
</code></pre>
</dd>
<dd>
<pre class="code"><code>import site;
site.addsitedir('/site/lib/python')
</code></pre>
</dd>
</dl>
<dt>Ruby</dt>
<dd>
<pre class="code"><code>puts $LOAD_PATH.push("/site/lib/ruby")
</code></pre>
</dd></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2008/06/perl-python-ruby.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl: SID のバイナリ→テキスト変換</title>
		<link>http://www.sfo.jp/blog/archives/2007/07/perl-sid-binary-to-text.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/07/perl-sid-binary-to-text.html#comments</comments>
		<pubDate>Fri, 20 Jul 2007 13:09:16 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/07/perl-sid-binary-to-text.html</guid>
		<description><![CDATA[Active Directory から取得したバイナリ形式の SID をテキスト形式に変換する方法。
下記の $entry は Net::LDAP::Entry オブジェクト。

2009-07-10:
コードを修正。
 [...]]]></description>
			<content:encoded><![CDATA[<p>Active Directory から取得したバイナリ形式の SID をテキスト形式に変換する方法。
下記の <code>$entry</code> は <code>Net::LDAP::Entry</code> オブジェクト。</p>

<pre class="brush: perl; auto-links: false;">
my $sid_bin = $entry-&amp;gt;get_value(&#039;objectSid&#039;);
my ($sid_rev, $sid_sub_auths_num, $sid_reserved, $sid_id_auth, @sid_sub_auths) =
  unpack(&#039;C2nNV*&#039;, $sid_bin);
my $sid = sprintf(
  &#039;S-%u-%u&#039; . &#039;-%u&#039; x $sid_sub_auths_num,
  $sid_rev, $sid_id_auth, @sid_sub_auths
);
</pre>

<p><ins>2009-07-10:
コードを修正。
SID テキストの 3 番目の文字は
subauthority の数 (<code>$sid_sub_auths_num</code>) ではなく
identifiter-authority (<code>$sid_id_auth</code>) だった。
</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/07/perl-sid-binary-to-text.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl: mktemp(1) クローン</title>
		<link>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html#comments</comments>
		<pubDate>Tue, 10 Jul 2007 16:07:08 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html</guid>
		<description><![CDATA[
仕事で久しぶりの Solaris 8 環境と格闘中。
3年ぶりかな?
クリーンインストールしたので、
コンパイラがない、
wget(1) もない、
tar(1) はバグってて展開できないアーカイブがある
(それらしい
 [...]]]></description>
			<content:encoded><![CDATA[<p>
仕事で久しぶりの Solaris 8 環境と格闘中。
3年ぶりかな?
クリーンインストールしたので、
コンパイラがない、
<code>wget</code>(1) もない、
<code>tar</code>(1) はバグってて展開できないアーカイブがある
(<a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-110951-07-1">それらしい
パッチがある</a>が、無償ではダウンロードできないみたい)
など、非常に使いにくい。
それに比べれば、Solaris 10 はずっとずっと使いやすいなぁ。
</p>

<p><p>
<code>mktemp</code>(1) も含まれていないので、
Samba のコンパイルで
<code><code>make test_pam_modules test_nss_modules</code></code>
が実行できない。
仕方ないので Perl で実装して、自作ツールチェインに同梱することにした。
ちなみに <a href="http://search.cpan.org/dist/ppt/">Perl Power Tools</a>
にも含まれていなかった。
</p>
<pre class="code"><code>#!/usr/bin/perl -w</p>

<h1>#</h1>

<h2>Perl-version mktemp(1) command</h2>

<h2>Copyright (c) 2007 SATOH Fumiyasu @ OSS Technology, Co., Japan</h2>

<h2>&lt;<a href="http://www.osstech.co.jp/">http://www.osstech.co.jp/</a>&gt;</h2>

<h1>#</h1>

<h2>License: GNU General Public License version 3</h2>

<h2>Date: 2007-07-11, since 2007-07-11</h2>

<h1>#</h1>

<p>use strict;</p>

<h1>use warnings;</h1>

<p>use Getopt::Long;
use POSIX;
use IO::File;
umask(0077);
my @seed = ('0'..'9', 'a'..'z', 'A'..'Z');
my $flag<em>dir = undef;
my $flag</em>quiet = undef;
my $flag<em>unsafe = undef;
my $flag</em>generate<em>path = undef;
my $prefix</em>dir = undef;
my $template = 'tmp.XXXXXXXXXX';
my $cmd<em>name = $0;
$cmd</em>name =~ s#^.*/##;
my $cmd_usage = "Usage: $cmd_name [-dptu] [-p DIRECTORY] [TEMPLATE]\n";
Getopt::Long::Configure('bundling');
Getopt::Long::Configure('no_ignore_case');
Getopt::Long::Configure('no_auto_abbrev');
GetOptions(
'd' =&gt;   \$flag_dir,
'q' =&gt;   \$flag_quiet,
't' =&gt;   \$flag_generate_path,
'u' =&gt;   \$flag_unsafe,
'p=s' =&gt; sub {
$prefix_dir = $_[1];
$flag_generate_path = 1;
}
) || die "$cmd_usage";
if ($flag_quiet) {
$SIG{'<strong>DIE</strong>'} = sub {
exit(1);
}
}
if ($flag_unsafe) {
die "$cmd_name: -u option is not supported yet\n";
}
if (@ARGV == 1) {
$template = $ARGV[0];
}
elsif (@ARGV &gt; 1) {
die "$cmd_name: too many argument\n";
}
if ($flag_generate_path) {
if ($template =~ m#/#) {
die "$cmd_name: template must not contain directory separators in -t mode\n";
}
if (defined($ENV{'TMPDIR'})) {
$template = "$ENV{'TMPDIR'}/$template";
}
elsif (defined($prefix_dir)) {
$template = "$prefix_dir/$template";
}
else {
$template = "/tmp/$template";
}
}
$template =~ s#//+#/#g;
$template =~ s/(X+)$//;
my $seed_n = defined($1) ? length($1) : 0;
my $try_max = $seed_n * 10;
for (my $try = 0; $try &lt;= $try_max; $try++) {
my $temp = $template;
for (my $n = 0; $n &lt; $seed_n; $n++) {
$temp .= $seed[int(rand(@seed))];
}
if ($flag_dir) {
if (mkdir($temp, 0700)) {
print "$temp\n";
exit(0);
}
elsif ($! != POSIX::EEXIST || $try == $try_max) {
die "$cmd_name: cannot create temporary directory $temp: $!\n";
}
}
else {
my $fh = IO::File-&gt;new($temp, O_RDWR|O_CREAT|O_EXCL, 0600);
if (defined($fh)) {
print "$temp\n";
exit(0);
}
elsif ($! != POSIX::EEXIST || $try == $try_max) {
die "$cmd_name: cannot create temporary file $temp: $!\n";
}
}
}</p>

<h2>Not reached</h2>

<p>exit(1);
</code></pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>単語リストの全組合せの一覧</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/generate-all-mixedword.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/generate-all-mixedword.html#comments</comments>
		<pubDate>Sun, 18 Feb 2007 16:04:28 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/generate-all-mixedword.html</guid>
		<description><![CDATA[
先日、戯れに
Jonh the Ripper
を使ってみた。
単語リストを使ったパスワードクラックができるのだが、
単語を組み合わせたクラックはできないみたいなので、
与えられた単語リストの全組合せを生成する Perl [...]]]></description>
			<content:encoded><![CDATA[<p>
先日、戯れに
<a href="http://www.openwall.com/john/">Jonh the Ripper</a>
を使ってみた。
単語リストを使ったパスワードクラックができるのだが、
単語を組み合わせたクラックはできないみたいなので、
与えられた単語リストの全組合せを生成する Perl スクリプトを作ってみた:
</p>

<p><pre class="code"><code>#!/usr/bin/env perl
use strict;
use warnings;
my @word<em>seed = @ARGV;
sub word</em>mix
{
my ($word<em>pre, @word</em>list) = @_;
my $n = scalar(@word<em>list);
for (my $i=0; $i &lt; $n; $i++) {
my @word</em>list<em>remained = @word</em>list;
my $word = $word<em>pre . splice(@word</em>list<em>remained, $i, 1);
print "$word\n";
word</em>mix($word, @word<em>list</em>remained);
}
}
word<em>mix('', @word</em>seed);
</code></pre>
<p>
一応できた (と思う) が、どうも美しさに自信がない。
この手の (数学的な?) アルゴリズムの実装は苦手かも…。
どうやって実装していいかなかなか思いつかず、30分くらいかかってしまった。
以下、実行例:
</p>
<pre class="terminal"><code>$ <kbd>./wordmix foo bar hoge hige &gt;wordlist.txt</kbd>
$ <kbd>sudo john -wordfile:wordlist.txt /etc/shadow</kbd>
</code></pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/generate-all-mixedword.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さすが Catalyst (触媒)</title>
		<link>http://www.sfo.jp/blog/archives/2006/11/catalyst.html</link>
		<comments>http://www.sfo.jp/blog/archives/2006/11/catalyst.html#comments</comments>
		<pubDate>Sat, 11 Nov 2006 15:49:25 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2006/11/catalyst.html</guid>
		<description><![CDATA[# apt-get install \
libcatalyst-perl \
libcatalyst-modules-perl \
libcatalyst-modules-extra-perl \
libcatalyst [...]]]></description>
			<content:encoded><![CDATA[<pre class="terminal"><code># <kbd>apt-get install \
libcatalyst-perl \
libcatalyst-modules-perl \
libcatalyst-modules-extra-perl \
libcatalyst-plugin-formvalidator-perl</kbd>
<var>省略</var>
0 upgraded, <strong>92 newly installed</strong>, 0 to remove and 1 not upgraded.
Need to get 218kB/6287kB of archives.
After unpacking 27.7MB of additional disk space will be used.
Do you want to continue [Y/n]?
</code></pre>

<p><p>
依存しているパッケージ、多い。
推奨パッケージも含めると、120 を超える…。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2006/11/catalyst.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>やっぱ Perl で Catalyst?</title>
		<link>http://www.sfo.jp/blog/archives/2006/11/perl-catalyst.html</link>
		<comments>http://www.sfo.jp/blog/archives/2006/11/perl-catalyst.html#comments</comments>
		<pubDate>Fri, 10 Nov 2006 11:57:50 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2006/11/perl-catalyst.html</guid>
		<description><![CDATA[
仕事で作成するツールの Web インターフェイスを何で実装しようか、
ここ数日悩み続けた。
結局、Perl で Catalyst にする…かな?
多少は慣れている Sledge
という手もあるが、せめて 1 つくらいは [...]]]></description>
			<content:encoded><![CDATA[<p>
仕事で作成するツールの Web インターフェイスを何で実装しようか、
ここ数日悩み続けた。
結局、Perl で <a href="">Catalyst</a> にする…かな?
多少は慣れている <a href="http://sl.edge.jp/">Sledge</a>
という手もあるが、せめて 1 つくらいは新しいもの (Catalyst) に手を出してみようと思う。
</p>

<p><span id="more-115"></span>
<p>
ほかの選択肢は
Ruby で Ruby on Rails、
Python で TurboGears あたり。
結局 Catalyst を含め試すことはなかったが、
人の評価やサンプルコードを見た限りでは、
Catalyst → Perl と同じで自由度が高い (高すぎる?)、
Ruby on Rails → 名前の通りしっかりしたレールの乗る (乗らされる?)、
TurboGears → バランスがよさげ、といった感じ。
</p>
<p>
それほど時間がない、
Perl に慣れている、
CPAN の魅力、
自由度が高い面は自分で制御できる、
ということで Catalyst で…。
あとは JavaScript (AJAX) をどうすべぇ。
</p>
<p>
ところで、<a href="http://www.lost-season.jp/mt/2005/11/2005112322.html">某ページのDBIx::Class と Class::DBI 比較</a>記事によると、
<a href="http://search.cpan.org/dist/DBIx-Class/">DBIx::Class</a>
はイイ感じらしい。
今回は DBI を利用する予定はないけど、
次の機会で DBIx::Class を試してみよう。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2006/11/perl-catalyst.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl: die \$a;</title>
		<link>http://www.sfo.jp/blog/archives/2006/05/perl-die-a.html</link>
		<comments>http://www.sfo.jp/blog/archives/2006/05/perl-die-a.html#comments</comments>
		<pubDate>Fri, 19 May 2006 04:23:16 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2006/05/perl-die-a.html</guid>
		<description><![CDATA[
仕事で eval と die を利用した例外を上げる処理を作っている。
die した場合に呼び出し元にどうやって文字列以外のデータを伝えるのかを考えてみた。
そこで、die にリファレンスを渡せるか試してみた:


$ [...]]]></description>
			<content:encoded><![CDATA[<p>
仕事で eval と die を利用した例外を上げる処理を作っている。
die した場合に呼び出し元にどうやって文字列以外のデータを伝えるのかを考えてみた。
そこで、die にリファレンスを渡せるか試してみた:
</p>

<p><pre class="code"><code>$ <kbd>perl -e 'use Data::Dumper; @a=(9,99); eval {die \@a;}; print Dumper($@)'</kbd>
$VAR1 = [
9,
99
];
</code></pre>
<p>
へぇ。
これを利用するのは変かなぁ。
</p>
<p>
2006-05-22 追記:
そういえば、<a href="http://search.cpan.org/dist/Error/">Error モジュール</a>
で die にオブジェクトを渡していたな。なーんだ。
やっぱり Error を利用するのが一番簡単で手間もかからないかも。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2006/05/perl-die-a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>perl の getgr*</title>
		<link>http://www.sfo.jp/blog/archives/2006/05/perl-getgr.html</link>
		<comments>http://www.sfo.jp/blog/archives/2006/05/perl-getgr.html#comments</comments>
		<pubDate>Fri, 19 May 2006 02:59:05 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2006/05/perl-getgr.html</guid>
		<description><![CDATA[
`perldoc -f getgrent` より:



The $members value returned by getgr*() is a space separated list of the
login n [...]]]></description>
			<content:encoded><![CDATA[<p>
`perldoc -f getgrent` より:
</p>

<p><blockquote>
The $members value returned by getgr*() is a space separated list of the
login names of the members of the group.
</blockquote>
<p>
配列のリファレンスを返せばいいのに、なんでこんな仕様なんだ…。
せめて group(5) と同じくカンマ区切りにすればいいのに。
おかげで、スペースを含むグループ名が使えない。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2006/05/perl-getgr.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rt.cpan.org の &amp; エスケープ問題</title>
		<link>http://www.sfo.jp/blog/archives/2005/09/rtcpanorg.html</link>
		<comments>http://www.sfo.jp/blog/archives/2005/09/rtcpanorg.html#comments</comments>
		<pubDate>Fri, 16 Sep 2005 16:22:30 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2005/09/rtcpanorg.html</guid>
		<description><![CDATA[
7ヶ月前に Template::Plugin::URL が &#38; を HTML エスケープしてしまう問題を報告したが、
いまだ反応なし。Template-Toolkit のメーリングリストに投げたほうがいいのかな [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://rt.cpan.org/NoAuth/Bug.html?id=11551">7ヶ月前に Template::Plugin::URL が &amp; を HTML エスケープしてしまう問題</a>を報告したが、
いまだ反応なし。Template-Toolkit のメーリングリストに投げたほうがいいのかなぁ。
</p>

<p><p>
それはともかく、
rt.cpan.org が、バグ報告の本文中の &amp; を HTML として表示する際に &amp;amp; にエスケープしない問題があり、そっちも進展なし。
この問題もちゃんと報告したのだが、
<q>RT 3.4 にアップグレードしたら直るでしょう。</q> と返事を受けとったきり。
2度<q>まだ直ってないよ。</q>と突っこみのメールしたが、返事も進展なし。
なんとかしてくれよ〜。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2005/09/rtcpanorg.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Class::DBI 0.9x から 3.x へ</title>
		<link>http://www.sfo.jp/blog/archives/2005/09/classdbi-09x-3x.html</link>
		<comments>http://www.sfo.jp/blog/archives/2005/09/classdbi-09x-3x.html#comments</comments>
		<pubDate>Tue, 13 Sep 2005 01:38:05 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2005/09/classdbi-09x-3x.html</guid>
		<description><![CDATA[
某所で
Class::DBI が 3.x になったことを知る。
新設されたメーリングリストに情報が流れてない（と思う…）ので気づかなかった。
7月ごろに開発体制についてゴタゴタがあって、今後どうなるかと心配していたが、 [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://blog.bulknews.net/mt/archives/001810.html">某所</a>で
<a href="http://search.cpan.org/dist/Class-DBI/">Class::DBI が 3.<var>x</var> になった</a>ことを知る。
<a href="http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi">新設されたメーリングリスト</a>に情報が流れてない（と思う…）ので気づかなかった。
<a href="http://blog.bulknews.net/mt/archives/001775.html">7月ごろに開発体制についてゴタゴタ</a>があって、今後どうなるかと心配していたが、一安心といったところかな。
このゴタゴタの結果 <a href="http://search.cpan.org/dist/DBIx-Class/">DBIx::Class</a>
という対抗馬が生まれてしまったわけだが、
共に競いあってよい実装に育って欲しいものだ。
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2005/09/classdbi-09x-3x.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

