我想对数组进行排序,并将特定元素放在开头.
这是我的代码:
sub MySort {
my $P = 'node';
if ($a eq $P) {
return -1;
}
return -1 if $a lt $b;
return 0 if $a eq $b;
return 1 if $a gt $b;
}
my @x = qw (abc def xxx yyy ggg mmm node);
print join "\n",sort MySort @x
Run Code Online (Sandbox Code Playgroud)
我希望"节点"开始,但它不起作用.
结果:
abc
def
ggg
node
mmm
xxx
yyy
Run Code Online (Sandbox Code Playgroud)
预期结果:
node
abc
def
ggg
mmm
xxx
yyy
Run Code Online (Sandbox Code Playgroud) 假设使用Linux:
在Perl中,该exec函数执行外部程序并立即退出,将外部程序保留在同一个shell会话中.
使用Python的一个非常接近的答案是/sf/answers/927983591/
但是,Python解决start_new_session=True方案使用setsid方法启动外部程序,这意味着该解决方案适用于制作守护程序,而不是交互式程序.
这是一个使用perl的简单示例:
perl -e '$para=qq(-X --cmd ":vsp");exec "vim $para"'
Run Code Online (Sandbox Code Playgroud)
启动vim后,原始Perl程序已退出,vim仍在同一个shell会话中(vim不会发送到新的会话组).
如何使用Python获得相同的解决方案.