Changeset 27052

Show
Ignore:
Timestamp:
12/19/08 11:28:24 (4 years ago)
Author:
drry
Message:
  • 仕上げの HTML。
Location:
websites/perl-users.jp
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • websites/perl-users.jp/html/articles/advent-calendar/2008/18.html

    r27047 r27052  
    1616<div class="section"> 
    1717 
    18 <p> 原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂にgkbrしている<a href="http://d.hatena.ne.jp/hakobe932">id:hakobe932</a>です. 
     18<p>原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂にgkbrしている<a href="http://d.hatena.ne.jp/hakobe932">id:hakobe932</a>です. 
    1919932は草津の932です.こんにちは. 
    2020</p> 
    2121 
    22 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.TIMTOWTDIが信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 
     22<p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.<abbr title="There is more than one way to do it">TIMTOWTDI</abbr>が信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 
    2323</p> 
    2424 
    2525<h2>行単位で読み込む</h2> 
    2626 
    27 <p>もっともシンプルなのは行入力演算子(&lt;&gt;)を使って行毎にデータを読み込み,それを連結する方法です.</p> 
     27<p>もっともシンプルなのは行入力演算子(<code>&lt;&gt;</code>)を使って行毎にデータを読み込み,それを連結する方法です.</p> 
    2828 
    2929<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    3636</code></pre> 
    3737 
    38 <p>もう少し工夫して後置whileを使うと1行で書くことができます.</p> 
     38<p>もう少し工夫して後置<code>while</code>を使うと1行で書くことができます.</p> 
    3939 
    4040<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    5656<h2>$/を利用して読み込む</h2> 
    5757 
    58 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として$/変数を使うやりかたがあります.</p> 
     58<p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として<var>$/</var>変数を使うやりかたがあります.</p> 
    5959 
    60 <p>グローバル変数$/をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 
     60<p>グローバル変数<var>$/</var>をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 
    6161</p> 
    6262 
     
    7171</code></pre> 
    7272 
    73 <p>これでは少しかっこわるいのですが,doブロックを使えばもう少しきれいです.</p> 
     73<p>これでは少しかっこわるいのですが,<code>do</code>ブロックを使えばもう少しきれいです.</p> 
    7474 
    7575<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    9292</code></pre> 
    9393 
    94 <p>Perl6::Slurpでexportされるslurp関数を使えば,おまじない的な部分がなくなって,とってもシンプルでわかりやすいコードが書けます.しかも,ファイルハンドルをopenする手間もへって良いとこづくしですね! 似たようなモジュールに<a href="http://search.cpan.org/perldoc?File::Slurp">File::Slurp</a>があります.</p> 
     94<p>Perl6::Slurpでexportされる<code>slurp</code>関数を使えば,おまじない的な部分がなくなって,とってもシンプルでわかりやすいコードが書けます.しかも,ファイルハンドルを<code>open</code>する手間もへって良いとこづくしですね! 似たようなモジュールに<a href="http://search.cpan.org/perldoc?File::Slurp">File::Slurp</a>があります.</p> 
    9595 
    9696<p>他に<a href="http://search.cpan.org/perldoc?Path::Class">Path::Class</a>を使うという手もあります. 
     
    103103</code></pre> 
    104104 
    105 <p>Path::Classはslurpするのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 
     105<p>Path::Classは<code>slurp</code>するのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 
    106106のファイル操作のモジュールですね.</p> 
    107107 
    108108<p>slurp系のメソッドや関数は,リストコンテキストで評価されると行のリストを返すので注意が必要です.以下のようなはまり方をすると非常にやっかいです.</p> 
    109109 
    110 <pre class="lang-perl"><code> 
    111 use Perl6::Slurp; 
     110<pre class="lang-perl"><code>use Perl6::Slurp; 
    112111my $obj = { data =&gt; slurp './inputfile' }; # このslurpはリストコンテキストで実行される! 
    113112</code></pre> 
     
    117116<h2>おまけ: readシステムコールで直接読み込む</h2> 
    118117 
    119 <p>sysread関数をつかえばreadシステムコールを発行して指定サイズ文だけファイルからデータを読み込めます.-s 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 
     118<p><code>sysread</code>関数をつかえば<code>read</code>システムコールを発行して指定サイズ文だけファイルからデータを読み込めます.<code>-s</code> 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 
    120119</p> 
    121120 
     
    132131<h2>まとめ</h2> 
    133132 
    134 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや$/を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 
     133<p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや<var>$/</var>を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 
    135134<p>もし,このほかにもファイルを飲み込む方法があればぜひ教えてクダサイ.</p> 
    136135 
    137 <p>現在つぎにお願いする人をさがしてます…> Yuichi Tateno に</p> 
     136<p>現在つぎにお願いする人をさがしてます…<ins datetime="2008-12-19">> Yuichi Tateno に</ins></p> 
    138137 
    139138 
  • websites/perl-users.jp/html/articles/advent-calendar/2008/19.html

    r27049 r27052  
    11<html> 
    22<head profile="http://purl.org/net/ns/metaprof"> 
    3     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     3    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    44    <title>Vim で便利な Perl Plugins</title> 
    55    <style> 
     
    1717        ノ |_   ll__l---||_       Nice boat. 
    1818      rj「l__`ー'  ヽlーj  L---┐ 
    19       |―┴┴―`ーrュ-‐< ̄.ィj .__jl 
     19      |―┴┴―`ーrュ-‐&lt; ̄.ィj .__jl 
    2020      |[][][][][][] i """ _..,,rr=''´ l 
    2121      l ̄ ̄ ̄ ̄/7-‐'´     / 
     
    2525 
    2626</pre> 
    27 <p>さて、本題ですが、みなさん (の 1/3 ぐらい) が大好きな vim についての話です。といっても vim 全体について書くと長くなるので、便利な手前味噌な Plugin の紹介です。</p> 
     27<p>さて、本題ですが、みなさん (の 1/3 ぐらい) が大好きな Vim についての話です。といっても Vim 全体について書くと長くなるので、便利な手前味噌な Plugin の紹介です。</p> 
    2828 
    2929<h2>use 文を挿入</h2> 
    30 <p><a href="http://subtech.g.hatena.ne.jp/secondlife/20070605/1181004403">http://subtech.g.hatena.ne.jp/secondlife/20070605/1181004403</a> 
    31 <p>エディタで書いてる途中に Perl::Module->new と書いたら頭まで戻って use Perl::Module; と書くのはめんどくさいですね。ばかげています。そんなことを即座にやってくれる Plugin です。</p> 
     30<p><a href="http://subtech.g.hatena.ne.jp/secondlife/20070605/1181004403">http://subtech.g.hatena.ne.jp/secondlife/20070605/1181004403</a></p> 
     31<p>エディタで書いてる途中に <code>Perl::Module->new</code> と書いたら頭まで戻って <code>use Perl::Module;</code> と書くのはめんどくさいですね。ばかげています。そんなことを即座にやってくれる Plugin です。</p> 
    3232 
    3333<h2>Perldoc をさくさくひくよ</h2> 
    3434<p><a href="http://subtech.g.hatena.ne.jp/secondlife/20081001/1222845699">http://subtech.g.hatena.ne.jp/secondlife/20081001/1222845699</a></p> 
    35 <p>あんまりよい Perldoc viewer が無いので作りました。K で vim の man 引きっぽくつかえます。それと viewer のバッファで s でソースとドキュメントがトグルするのが地味に便利です。ちなみに perldoc の引数は -f ぐらいしか覚えていないです。</p> 
     35<p>あんまりよい Perldoc viewer が無いので作りました。<kbd>K</kbd> で Vim の man 引きっぽくつかえます。それと viewer のバッファで <kbd>s</kbd> でソースとドキュメントがトグルするのが地味に便利です。ちなみに <code>perldoc</code> の引数は <code>-f</code> ぐらいしか覚えていないです。</p> 
    3636 
    3737<p>さて、今回は便利な Plugin の紹介でした。関係ない話をすると、最初超便利!と思っても1ヶ月ぐらいで使わなくなる物とそれ以上使い続けられる物があります。だいたいネットで記事を書いている人は、使い続けて1週間ぐらいで「これは便利」的な記事を書く傾向にあると思う(含む自分)なので、じつは便利と紹介されていても便利でない物 ( <a href="http://subtech.g.hatena.ne.jp/secondlife/20080729/1217315593">もしかして: vim + errormarker.vim で vim</a> )があるので気をつけましょう。</p> 
  • websites/perl-users.jp/html/articles/advent-calendar/2008/index.html

    r27048 r27052  
    8888                                        <td class="link"><a href="/articles/advent-calendar/2008/17.html">17</a></td> 
    8989                                        <td class="link"><a href="/articles/advent-calendar/2008/18.html">18</a></td> 
    90                                         <td class="today"><a href="/articles/advent-calendar/2008/18.html">19</a></td> 
     90                                        <td class="today"><a href="/articles/advent-calendar/2008/19.html">19</a></td> 
    9191                                        <td>20</td> 
    9292                                    </tr> 
  • websites/perl-users.jp/ttroot/articles/advent-calendar/2008/18.html

    r27046 r27052  
     1[%- SET TITLE = 'ファイルのすべてを飲み込む方法' -%] 
    12<?xml version="1.0" encoding="UTF-8"?> 
    23<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
     
    45<head profile="http://purl.org/net/ns/metaprof"> 
    56    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    6     <title>ファイルのすべてを飲み込む方法</title> 
     7    <title>[% TITLE | html %]</title> 
    78    <link rel="stylesheet" href="http://perl-users.jp/articles/advent-calendar/adventcal.css" type="text/css" media="screen" /> 
    89    <link rel="stylesheet" href="http://perl-users.jp/articles/advent-calendar/prettify.css" type="text/css" media="screen" /> 
     
    1213<body> 
    1314 
    14 <h1>ファイルのすべてを飲み込む方法</h1> 
     15<h1>[% TITLE | html %]</h1> 
    1516 
    1617<div class="section"> 
    1718 
    18 <p> 原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂にgkbrしている<a href="http://d.hatena.ne.jp/hakobe932">id:hakobe932</a>です. 
     19<p>原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂にgkbrしている<a href="http://d.hatena.ne.jp/hakobe932">id:hakobe932</a>です. 
    1920932は草津の932です.こんにちは. 
    2021</p> 
    2122 
    22 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.TIMTOWTDIが信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 
     23<p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.<abbr title="There is more than one way to do it">TIMTOWTDI</abbr>が信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 
    2324</p> 
    2425 
    2526<h2>行単位で読み込む</h2> 
    2627 
    27 <p>もっともシンプルなのは行入力演算子(&lt;&gt;)を使って行毎にデータを読み込み,それを連結する方法です.</p> 
     28<p>もっともシンプルなのは行入力演算子(<code>&lt;&gt;</code>)を使って行毎にデータを読み込み,それを連結する方法です.</p> 
    2829 
    2930<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    3637</code></pre> 
    3738 
    38 <p>もう少し工夫して後置whileを使うと1行で書くことができます.</p> 
     39<p>もう少し工夫して後置<code>while</code>を使うと1行で書くことができます.</p> 
    3940 
    4041<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    5657<h2>$/を利用して読み込む</h2> 
    5758 
    58 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として$/変数を使うやりかたがあります.</p> 
     59<p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として<var>$/</var>変数を使うやりかたがあります.</p> 
    5960 
    60 <p>グローバル変数$/をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 
     61<p>グローバル変数<var>$/</var>をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 
    6162</p> 
    6263 
     
    7172</code></pre> 
    7273 
    73 <p>これでは少しかっこわるいのですが,doブロックを使えばもう少しきれいです.</p> 
     74<p>これでは少しかっこわるいのですが,<code>do</code>ブロックを使えばもう少しきれいです.</p> 
    7475 
    7576<pre class="lang-perl"><code>open my $fh, '&lt;', './inputfile' 
     
    9293</code></pre> 
    9394 
    94 <p>Perl6::Slurpでexportされるslurp関数を使えば,おまじない的な部分がなくなって,とってもシンプルでわかりやすいコードが書けます.しかも,ファイルハンドルをopenする手間もへって良いとこづくしですね! 似たようなモジュールに<a href="http://search.cpan.org/perldoc?File::Slurp">File::Slurp</a>があります.</p> 
     95<p>Perl6::Slurpでexportされる<code>slurp</code>関数を使えば,おまじない的な部分がなくなって,とってもシンプルでわかりやすいコードが書けます.しかも,ファイルハンドルを<code>open</code>する手間もへって良いとこづくしですね! 似たようなモジュールに<a href="http://search.cpan.org/perldoc?File::Slurp">File::Slurp</a>があります.</p> 
    9596 
    9697<p>他に<a href="http://search.cpan.org/perldoc?Path::Class">Path::Class</a>を使うという手もあります. 
     
    103104</code></pre> 
    104105 
    105 <p>Path::Classはslurpするのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 
     106<p>Path::Classは<code>slurp</code>するのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 
    106107のファイル操作のモジュールですね.</p> 
    107108 
    108109<p>slurp系のメソッドや関数は,リストコンテキストで評価されると行のリストを返すので注意が必要です.以下のようなはまり方をすると非常にやっかいです.</p> 
    109110 
    110 <pre class="lang-perl"><code> 
    111 use Perl6::Slurp; 
     111<pre class="lang-perl"><code>use Perl6::Slurp; 
    112112my $obj = { data =&gt; slurp './inputfile' }; # このslurpはリストコンテキストで実行される! 
    113113</code></pre> 
     
    117117<h2>おまけ: readシステムコールで直接読み込む</h2> 
    118118 
    119 <p>sysread関数をつかえばreadシステムコールを発行して指定サイズ文だけファイルからデータを読み込めます.-s 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 
     119<p><code>sysread</code>関数をつかえば<code>read</code>システムコールを発行して指定サイズ文だけファイルからデータを読み込めます.<code>-s</code> 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 
    120120</p> 
    121121 
     
    132132<h2>まとめ</h2> 
    133133 
    134 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや$/を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 
     134<p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや<var>$/</var>を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 
    135135<p>もし,このほかにもファイルを飲み込む方法があればぜひ教えてクダサイ.</p> 
    136136 
    137 <p>現在つぎにお願いする人をさがしてます…</p> 
     137<p>現在つぎにお願いする人をさがしてます…<ins datetime="2008-12-19">> Yuichi Tateno に</ins></p> 
    138138 
    139139 
  • websites/perl-users.jp/ttroot/articles/advent-calendar/2008/index.html

    r27031 r27052  
    4444                        <li><a href="[% ABS_PATH %]/2008/17.html">酔っぱらった勢いでコードを書く際に大切なこと - 17日目</a></li> 
    4545                        <li><a href="[% ABS_PATH %]/2008/18.html">ファイルのすべてを飲み込む方法 - 18日目</a></li> 
     46                        <li><a href="[% ABS_PATH %]/2008/19.html">Vim で便利な Perl Plugins - 19日目</a></li> 
    4647                    </ul> 
    4748                </div> 
     
    8889                                        <td class="link"><a href="[% ABS_PATH %]/2008/16.html">16</a></td> 
    8990                                        <td class="link"><a href="[% ABS_PATH %]/2008/17.html">17</a></td> 
    90                                         <td class="today">18</td> 
    91                                         <td>19</td> 
     91                                        <td class="link"><a href="[% ABS_PATH %]/2008/18.html">18</a></td> 
     92                                        <td class="today"><a href="[% ABS_PATH %]/2008/19.html">19</a></td> 
    9293                                        <td>20</td> 
    9394                                    </tr>