小编asj*_*sjo的帖子

如何确定终端是否具有颜色功能?

我想更改程序以自动检测终端是否具有颜色功能,所以当我从一个不支持颜色的终端(比如(X)Emacs中的Mx shell)中运行所述程序时,颜色会自动关闭.

我不想硬编码程序来检测TERM = {emacs,dumb}.

我认为termcap/terminfo应该可以帮助解决这个问题,但到目前为止,我只是设法将这个(n)curses - 使用代码片段拼凑在一起,当它无法找到终端时会严重失败:

#include <stdlib.h>
#include <curses.h>

int main(void) {
 int colors=0;

 initscr();
 start_color();
 colors=has_colors() ? 1 : 0;
 endwin();

 printf(colors ? "YES\n" : "NO\n");

 exit(0);
}
Run Code Online (Sandbox Code Playgroud)

即我明白了:

$ gcc -Wall -lncurses -o hep hep.c
$ echo $TERM
xterm
$ ./hep
YES
$ export TERM=dumb
$ ./hep           
NO
$ export TERM=emacs
$ ./hep            
Error opening terminal: emacs.
$ 
Run Code Online (Sandbox Code Playgroud)

这是......次优的.

unix terminal termcap terminfo

28
推荐指数
3
解决办法
6955
查看次数

是否有一个优雅的拉链来交错Perl 5中的两个列表?

我最近在Perl 5中"需要"一个zip函数(当时我正在考虑如何计算相对时间?),即一个函数,它将两个列表和"拉链"一起放到一个列表中,交错元素.

(伪)例如:

@a=(1, 2, 3);
@b=('apple', 'orange', 'grape');
zip @a, @b; # (1, 'apple', 2, 'orange', 3, 'grape');
Run Code Online (Sandbox Code Playgroud)

哈斯克尔在前奏拉链Perl 6的有一个拉链运营商内置的,但你怎么做它在Perl 5优雅的方式?

perl zip

27
推荐指数
4
解决办法
9918
查看次数

标签 统计

perl ×1

termcap ×1

terminal ×1

terminfo ×1

unix ×1

zip ×1