Vim 这么多人使用,为什么开发 Vim 用的 perl 不再有人提起或谈论,个人觉得 perl 是 linux/unix 环境下的瑞士军刀,有着不小魅力

2016-09-07 10:32:23 +08:00
 faywong8888
7570 次点击
所在节点    Linux
36 条回复
willm
2016-09-07 11:38:39 +08:00
Perl 的没落充分验证了一句话

代码是写出来给人看的,顺便给计算机执行一下
zhanglintc
2016-09-07 11:55:36 +08:00
write only 的美誉不是白瞎的
hack
2016-09-07 12:17:23 +08:00
我记得五年前 poc 还是 perl 写,后来大多都转 python 流了
Clarencep
2016-09-07 12:21:08 +08:00
"代码是写出来给人看的,顺便给计算机执行一下" +1

程序猿的生命也是有限的, perl 那么多鬼符号太容易忘记了,还是 python 大法好
josephshen
2016-09-07 13:57:55 +08:00
吓得我直接就屏蔽楼主了,张嘴就胡说,是谁告诉你 vim 是 perl 写的?!
snopy
2016-09-07 14:43:35 +08:00
哪位大神来解释下这个 Perl 脚本:
use strict;
use Time::Local;
use Net::FTP;
use Getopt::Long;
use FileHandle;
use POSIX ":sys_wait_h";
use POSIX qw(strftime);
my $year = strftime "%Y",localtime(time-24*3600 );
my $day = strftime "%d",localtime(time-24*3600 );
my $month = strftime "%m",localtime(time-24*3600 );
my $hour = strftime "%H",localtime(time() );
my $min = strftime "%M",localtime(time() );
my $sec = strftime "%S",localtime(time() );
my $date = ($year.$month.$day);
my $cmd;
my $format_cmd;
my $scan_start_time;
my $script_list;
my $usage =<<"EOS";
Usage:$0 -t <scan_start_time>
for: 1.$0 -t "20110419"
-list <script_list>
for: 2.$0 -s "DM_P2PQOE_SE_AREAL3_D DM_P2PQOE_SE_AREAL1_D ..."
EOS

GetOptions(
"t:s" => \$scan_start_time,
"s:s" => \$script_list
);

if (defined $scan_start_time)
{
$date = $scan_start_time;
}

if (defined $script_list) {

my @script_list_names = split /\s+/, $script_list;
print "@script_list_names\n";

my $data_path = '/root/hadoop/pubdata/';
my $ctl_path = '/root/hadoop/hadoop_cfg/';
my $log_path = '/root/hadoop/hadoop_log/';

foreach my $script (@script_list_names) {

my $file_name = $data_path.$script.'-'.$date;

my $ctl_name = $ctl_path.$script.'.ctl';
my $log_name = $log_path.$script.'.log';

$file_name = `ls $file_name*`;
$format_cmd="perl -pi -e 's/\\\\N//g' $file_name";
system($format_cmd);
$cmd = "sqlldr userid=name/passwd\@ipms direct=true rows=1000000 bindsize=81920000 readsize=81920000 control=$ctl_name data=$file_name log=$log_name";
print $cmd;
system($cmd);
}
}
faywong8888
2016-09-07 14:51:38 +08:00
@josephshen
@kikyous
@araraloren
多谢你们指点。
yxzblue
2016-09-07 15:06:22 +08:00
推广应该更直接点
sampeng
2016-09-07 17:54:10 +08:00
@wupher 这个是说出心声了。。
perl 真心是可读性太差了
zhidian
2016-09-07 23:31:47 +08:00
Vim 可以录制键盘宏…… Perl 可以吗? Perl 可以处理文本, Vim 录制的键盘宏也可以处理文本,而且也可以保存起来随时运行,如此观之,处理文本,我用 Vim !

不过所有的正则表达式不都差不多么?处理起文本来也都是差不多的。
alcarl
2016-09-07 23:53:23 +08:00
@snopy 这好像是把一个日期的所有指定名字前缀的文件导入到 oracle 里的脚本。。。。。。。
alcarl
2016-09-07 23:57:12 +08:00
学一点 perl 在文本数据处理较多的场合和 linux 系统运维的场合还是很能提高效率的哈。
arakashic
2016-09-08 05:39:27 +08:00
vim 不依赖 perl 啊,`--enable-perlinterp`不是默认选项
jiangjun
2016-09-08 14:20:56 +08:00
Perl 只是用来写插件。 vim 支持的语言多了去了。现在用 Python 写 vim 插件是最方便的。
bwangel
2016-09-08 14:23:46 +08:00
这是 vim-common 的依赖,只有一个 libc 。
```
➜ /home/yundongx/Bundle/request $ apt-cache depends vim-common
vim-common
Depends: libc6
Breaks: vim-gui-common
|Recommends: vim
vim-athena
vim-gnome
vim-gtk
vim-nox
|Recommends: vim-gnome
|Recommends: vim-gtk
|Recommends: vim-athena
|Recommends: vim-nox
Recommends: vim-tiny
Replaces: vim-gui-common
```

这是 vim-gnome 的依赖,因为编译的时候开启了`--enable-perlinterp`,所以会依赖一个 libperl5.22 ,它和 libpython2.7 的作用基本相同!

```
➜ /home/yundongx/Bundle/request $ apt-cache depends vim-gnome
vim-gnome
Depends: vim-gui-common
Depends: vim-common
Depends: vim-runtime
Depends: libacl1
Depends: libbonoboui2-0
Depends: libc6
Depends: libgdk-pixbuf2.0-0
Depends: libglib2.0-0
Depends: libgnome-2-0
Depends: libgnomeui-0
Depends: libgpm2
Depends: libgtk2.0-0
Depends: libice6
Depends: liblua5.2-0
Depends: libpango-1.0-0
Depends: libperl5.22
Depends: libpython2.7
Depends: libruby2.2
Depends: libselinux1
Depends: libsm6
Depends: libtcl8.6
Depends: libtinfo5
Depends: libx11-6
Depends: libxt6
Suggests: cscope
Suggests: vim-doc
Suggests: fonts-dejavu
Suggests: gnome-icon-theme
```
Mithrandir
2016-09-09 09:15:02 +08:00
perl 太老了,历史包袱深重,并且新版本开发不力

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX