Changeset 27052
- Timestamp:
- 12/19/08 11:28:24 (4 years ago)
- Location:
- websites/perl-users.jp
- Files:
-
- 5 modified
-
html/articles/advent-calendar/2008/18.html (modified) (8 diffs)
-
html/articles/advent-calendar/2008/19.html (modified) (3 diffs)
-
html/articles/advent-calendar/2008/index.html (modified) (1 diff)
-
ttroot/articles/advent-calendar/2008/18.html (modified) (10 diffs)
-
ttroot/articles/advent-calendar/2008/index.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
websites/perl-users.jp/html/articles/advent-calendar/2008/18.html
r27047 r27052 16 16 <div class="section"> 17 17 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>です. 19 19 932は草津の932です.こんにちは. 20 20 </p> 21 21 22 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です. TIMTOWTDIが信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう.22 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.<abbr title="There is more than one way to do it">TIMTOWTDI</abbr>が信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 23 23 </p> 24 24 25 25 <h2>行単位で読み込む</h2> 26 26 27 <p>もっともシンプルなのは行入力演算子( <>)を使って行毎にデータを読み込み,それを連結する方法です.</p>27 <p>もっともシンプルなのは行入力演算子(<code><></code>)を使って行毎にデータを読み込み,それを連結する方法です.</p> 28 28 29 29 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 36 36 </code></pre> 37 37 38 <p>もう少し工夫して後置 whileを使うと1行で書くことができます.</p>38 <p>もう少し工夫して後置<code>while</code>を使うと1行で書くことができます.</p> 39 39 40 40 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 56 56 <h2>$/を利用して読み込む</h2> 57 57 58 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として $/変数を使うやりかたがあります.</p>58 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として<var>$/</var>変数を使うやりかたがあります.</p> 59 59 60 <p>グローバル変数 $/をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます.60 <p>グローバル変数<var>$/</var>をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 61 61 </p> 62 62 … … 71 71 </code></pre> 72 72 73 <p>これでは少しかっこわるいのですが, doブロックを使えばもう少しきれいです.</p>73 <p>これでは少しかっこわるいのですが,<code>do</code>ブロックを使えばもう少しきれいです.</p> 74 74 75 75 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 92 92 </code></pre> 93 93 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> 95 95 96 96 <p>他に<a href="http://search.cpan.org/perldoc?Path::Class">Path::Class</a>を使うという手もあります. … … 103 103 </code></pre> 104 104 105 <p>Path::Classは slurpするのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の105 <p>Path::Classは<code>slurp</code>するのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 106 106 のファイル操作のモジュールですね.</p> 107 107 108 108 <p>slurp系のメソッドや関数は,リストコンテキストで評価されると行のリストを返すので注意が必要です.以下のようなはまり方をすると非常にやっかいです.</p> 109 109 110 <pre class="lang-perl"><code> 111 use Perl6::Slurp; 110 <pre class="lang-perl"><code>use Perl6::Slurp; 112 111 my $obj = { data => slurp './inputfile' }; # このslurpはリストコンテキストで実行される! 113 112 </code></pre> … … 117 116 <h2>おまけ: readシステムコールで直接読み込む</h2> 118 117 119 <p> sysread関数をつかえばreadシステムコールを発行して指定サイズ文だけファイルからデータを読み込めます.-s演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます.118 <p><code>sysread</code>関数をつかえば<code>read</code>システムコールを発行して指定サイズ文だけファイルからデータを読み込めます.<code>-s</code> 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 120 119 </p> 121 120 … … 132 131 <h2>まとめ</h2> 133 132 134 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや $/を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p>133 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや<var>$/</var>を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 135 134 <p>もし,このほかにもファイルを飲み込む方法があればぜひ教えてクダサイ.</p> 136 135 137 <p>現在つぎにお願いする人をさがしてます… > Yuichi Tateno に</p>136 <p>現在つぎにお願いする人をさがしてます…<ins datetime="2008-12-19">> Yuichi Tateno に</ins></p> 138 137 139 138 -
websites/perl-users.jp/html/articles/advent-calendar/2008/19.html
r27049 r27052 1 1 <html> 2 2 <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"> 4 4 <title>Vim で便利な Perl Plugins</title> 5 5 <style> … … 17 17 ノ |_ ll__l---||_ Nice boat. 18 18 rj「l__`ー' ヽlーj L---┐ 19 |―┴┴―`ーrュ-‐ < ̄.ィj .__jl19 |―┴┴―`ーrュ-‐< ̄.ィj .__jl 20 20 |[][][][][][] i """ _..,,rr=''´ l 21 21 l ̄ ̄ ̄ ̄/7-‐'´ / … … 25 25 26 26 </pre> 27 <p>さて、本題ですが、みなさん (の 1/3 ぐらい) が大好きな vim についての話です。といっても vim 全体について書くと長くなるので、便利な手前味噌な Plugin の紹介です。</p>27 <p>さて、本題ですが、みなさん (の 1/3 ぐらい) が大好きな Vim についての話です。といっても Vim 全体について書くと長くなるので、便利な手前味噌な Plugin の紹介です。</p> 28 28 29 29 <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> 32 32 33 33 <h2>Perldoc をさくさくひくよ</h2> 34 34 <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> 36 36 37 37 <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 88 88 <td class="link"><a href="/articles/advent-calendar/2008/17.html">17</a></td> 89 89 <td class="link"><a href="/articles/advent-calendar/2008/18.html">18</a></td> 90 <td class="today"><a href="/articles/advent-calendar/2008/1 8.html">19</a></td>90 <td class="today"><a href="/articles/advent-calendar/2008/19.html">19</a></td> 91 91 <td>20</td> 92 92 </tr> -
websites/perl-users.jp/ttroot/articles/advent-calendar/2008/18.html
r27046 r27052 1 [%- SET TITLE = 'ファイルのすべてを飲み込む方法' -%] 1 2 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> … … 4 5 <head profile="http://purl.org/net/ns/metaprof"> 5 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 <title> ファイルのすべてを飲み込む方法</title>7 <title>[% TITLE | html %]</title> 7 8 <link rel="stylesheet" href="http://perl-users.jp/articles/advent-calendar/adventcal.css" type="text/css" media="screen" /> 8 9 <link rel="stylesheet" href="http://perl-users.jp/articles/advent-calendar/prettify.css" type="text/css" media="screen" /> … … 12 13 <body> 13 14 14 <h1> ファイルのすべてを飲み込む方法</h1>15 <h1>[% TITLE | html %]</h1> 15 16 16 17 <div class="section"> 17 18 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>です. 19 20 932は草津の932です.こんにちは. 20 21 </p> 21 22 22 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です. TIMTOWTDIが信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう.23 <p>ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.<abbr title="There is more than one way to do it">TIMTOWTDI</abbr>が信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 23 24 </p> 24 25 25 26 <h2>行単位で読み込む</h2> 26 27 27 <p>もっともシンプルなのは行入力演算子( <>)を使って行毎にデータを読み込み,それを連結する方法です.</p>28 <p>もっともシンプルなのは行入力演算子(<code><></code>)を使って行毎にデータを読み込み,それを連結する方法です.</p> 28 29 29 30 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 36 37 </code></pre> 37 38 38 <p>もう少し工夫して後置 whileを使うと1行で書くことができます.</p>39 <p>もう少し工夫して後置<code>while</code>を使うと1行で書くことができます.</p> 39 40 40 41 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 56 57 <h2>$/を利用して読み込む</h2> 57 58 58 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として $/変数を使うやりかたがあります.</p>59 <p>行入力演算子でファイルの内容をすべて読み込むのは,シンプルで比較的わかりやすいですが,行を一度保存するのでメモリを食いがちです.もう少し効率の良い方法として<var>$/</var>変数を使うやりかたがあります.</p> 59 60 60 <p>グローバル変数 $/をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます.61 <p>グローバル変数<var>$/</var>をローカル化すると行入力演算子でファイルの内容をすべて読み込むことができます. 61 62 </p> 62 63 … … 71 72 </code></pre> 72 73 73 <p>これでは少しかっこわるいのですが, doブロックを使えばもう少しきれいです.</p>74 <p>これでは少しかっこわるいのですが,<code>do</code>ブロックを使えばもう少しきれいです.</p> 74 75 75 76 <pre class="lang-perl"><code>open my $fh, '<', './inputfile' … … 92 93 </code></pre> 93 94 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> 95 96 96 97 <p>他に<a href="http://search.cpan.org/perldoc?Path::Class">Path::Class</a>を使うという手もあります. … … 103 104 </code></pre> 104 105 105 <p>Path::Classは slurpするのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の106 <p>Path::Classは<code>slurp</code>するのに使う以外にも,ファイル操作に関する便利なメソッドがたくさん用意されています.モダンなPerlコードでは定番の 106 107 のファイル操作のモジュールですね.</p> 107 108 108 109 <p>slurp系のメソッドや関数は,リストコンテキストで評価されると行のリストを返すので注意が必要です.以下のようなはまり方をすると非常にやっかいです.</p> 109 110 110 <pre class="lang-perl"><code> 111 use Perl6::Slurp; 111 <pre class="lang-perl"><code>use Perl6::Slurp; 112 112 my $obj = { data => slurp './inputfile' }; # このslurpはリストコンテキストで実行される! 113 113 </code></pre> … … 117 117 <h2>おまけ: readシステムコールで直接読み込む</h2> 118 118 119 <p> sysread関数をつかえばreadシステムコールを発行して指定サイズ文だけファイルからデータを読み込めます.-s演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます.119 <p><code>sysread</code>関数をつかえば<code>read</code>システムコールを発行して指定サイズ文だけファイルからデータを読み込めます.<code>-s</code> 演算子をファイルハンドルに対して使えばファイルサイズが取れるので,以下のようにすればファイルの内容をすべて読み込むことができます. 120 120 </p> 121 121 … … 132 132 <h2>まとめ</h2> 133 133 134 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや $/を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p>134 <p>というわけで,いろいろな方法でファイルの中身をすべて読み込んで見ました.多くの選択肢があってなかなかPerlらしい感じですね.わかりやすさや,覚えやすさ,書いているプログラムの性質などに合わせて,良さそうなのを選べば良いと思います.個人的には,Perl6::Slurpや<var>$/</var>を使った方法をよく使います.これからは,Path::Classを使うのがオシャレかもしれませんね.</p> 135 135 <p>もし,このほかにもファイルを飲み込む方法があればぜひ教えてクダサイ.</p> 136 136 137 <p>現在つぎにお願いする人をさがしてます…< /p>137 <p>現在つぎにお願いする人をさがしてます…<ins datetime="2008-12-19">> Yuichi Tateno に</ins></p> 138 138 139 139 -
websites/perl-users.jp/ttroot/articles/advent-calendar/2008/index.html
r27031 r27052 44 44 <li><a href="[% ABS_PATH %]/2008/17.html">酔っぱらった勢いでコードを書く際に大切なこと - 17日目</a></li> 45 45 <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> 46 47 </ul> 47 48 </div> … … 88 89 <td class="link"><a href="[% ABS_PATH %]/2008/16.html">16</a></td> 89 90 <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> 92 93 <td>20</td> 93 94 </tr>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)