Emacs org-modeを使ってみる: (36) org-babel-perlを使う2/4

このエントリーをはてなブックマークに追加

今回は,org-babel-perlの使い方を説明する(二回目).
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

表を埋め込むプログラム

以下は,table変数に設定した表を埋め込む例である.

#+BEGIN_SRC perl
  $table = [["a","b","c"], [1,2,3], [4,5,6]];
  print "|-\n";
  foreach my $row (@$table)  {
      print "|", join("|", @$row), "|\n";
  }
  print "|-\n";
#+END_SRC

#+results:
|---+---+---|
| a | b | c |
| 1 | 2 | 3 |
| 4 | 5 | 6 |
|---+---+---|

CSVファイルを読み込んで表として埋め込むプログラム

以下の例では,カンマ区切りの入力ファイルを読み込み,データ中の第1, 3, 6列を表として埋め込んでいる.

#+BEGIN_SRC perl :results output raw :exports results
  $file = "input.csv";
  my @i = (0, 2, 5);
  open(IN, "<", $file) || die;
  my @h;
  print "|-\n";
  while (<IN>) {
      chomp;
      my @d = (split(/,/))[@i];
      print "|", join(" | ", @d), "|\n";
      if (! @h) {
          @h = @d;
          print "|-\n";
      }
  }
  close(IN);
  print "|-\n";
#+END_SRC

#+results:
|---+---+---|
| a | c | f |
|---+---+---|
| 1 | 3 | 6 |
| 1 | 2 | 8 |
|---+---+---|

以下が元の入力ファイル input.csv の内容である.

a,b,c,d,e,f
1,2,3,4,5,6
1,1,2,3,5,8