org babel给出的结果与命令行执行给出的不一样

use 5.10.34;
$_ = "1";
sub func() {
  $_ = "2";
}
func;
print;

这段代码, 用perl执行结果是2. 而且也应该是2. 用babel执行, 得到的, 竟然是1, 这是咋回事:

#+begin_src perl
use 5.10.34;
$_ = "1";
sub func() {
  $_ = "2";
}
func;
print;
#+end_src

#+RESULTS:
: 1

The result is 1 because print statement returned 1 .

output 和 result 是两回事。

1 个赞

在header里头,你得加上output

#+begin_src perl :results output
use 5.10.34;
$_ = "1";
sub func() {
  $_ = "2";
}
func;
print;
#+end_src

1 个赞

是的, 我错了, 谢谢大家. 在整个buffer的开头加上"#+PROPERTY: header-args:perl :results output", 为了生效, 我先再kill-buffer, 再打开文件, 然后就可以了.

M-x revert-buffer 就行了

1 个赞