我正在尝试获取一个脚本,该脚本在本机Windows shell和cygwin shell(通过ssh)中都有效,它提示并读取用户输入的密码.到目前为止,我尝试了以下方法:
GetConsoleMode failed并退出Cannot write to terminal并退出Not implemented on MSWin32: The handle is invalid并退出所有这些都在本机Windows shell(命令提示符或电源shell)中工作,但当我在服务器的ssh会话中时,它们都不起作用.
真的,这是我最感兴趣的,让它在远程ssh会话中工作.
我通过安装在Windows服务器(2003 R2)上的cygwin获得ssh.我正在使用草莓perl而不是cygwin perl(cygwin perl打破了我需要在Windows中本机运行的其他perl脚本,而不是通过ssh).
我最好的猜测是cygwin + Windows正在使用草莓perl,因为它无法分辨它所处的环境.我正在寻找其他sshd + Windows解决方案来探索这个问题.
这些是我在搜索中找到的所有方法.是否还有其他人隐藏用户输入的方法?
我有一个类,返回一个哈希的方法.通常,我会得到如下结果:
%resp = $myclass->sub($foo);
Run Code Online (Sandbox Code Playgroud)
然后像这样访问返回的哈希的成员:
$resp{key}{subkey};
Run Code Online (Sandbox Code Playgroud)
在2d哈希的情况下.
我认为必须有一种方法将它组合成一条优雅的线,如下所示:
$myclass->sub($foo)->{key}{subkey}
Run Code Online (Sandbox Code Playgroud)
这显然没有被正确解除引用,因为Perl在尝试运行代码时返回此信息:
Can't use string ("1/8") as a HASH ref
在尝试随机解引用序列时,通过在Perlmonks上查看"References quick reference",我提出了以下内容,Perl没有抱怨,但也没有返回我正在寻找的内容:
$%{$myclass->sub($foo)}->{key}{subkey}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我神奇的解引用转义序列是做什么的吗?
我还在尝试解决我的哈希解除引用问题.我目前的问题是我现在将hashref传递给sub,我想在该sub中取消引用它.但我找不到正确的方法/语法来做到这一点.在sub中,我想迭代哈希键,但hashref的语法与哈希相同,我知道该怎么做.
所以我想要的是这样做:
sub foo {
%parms = @_;
foreach $keys (key %parms) { # do something };
}
Run Code Online (Sandbox Code Playgroud)
但是传入hashref而不是散列.
任何指针(双关语)都是受欢迎的.
谢谢.
我有哈希哈希,如下:
%hash = ( a => { b => 1, c =>2, d => 3},
a1 => { b => 11, c =>12, d => 13},
a2 => { b => 21, c =>22, d => 23} )
我想提取"b"元素并将其放入数组中.现在,我正在遍历哈希来执行此操作,但我认为我可以通过使用map来略微提高效率.我很确定如果这是一个哈希数组,我会使用这样的东西:
@hasharray = ( { b => 1, c =>2, d => 3},
{ b => 11, c =>12, d => 13},
{ b => 21, c =>22, d => 23} )
@array = map { …