我在这里有关于refs的非常noob-ish问题,但至少仍然让我感到困惑......
在下面的代码示例中,我正在尝试创建数组的哈希:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Terse = 1;
$Data::Dumper::Quotekeys = 0;
my @a1 = ( 'a1', 1, 1, 1 );
my @a2 = ( 'a2', 2, 2, 2 );
my $a1_ref = \@a1;
my $a2_ref = \@a2;
my @a = ( $a1_ref, $a2_ref );
my %h = ();
for my $i ( 1 .. 2 ) {
$h{"$i"} = \@a;
}
say Dumper \%h;
Run Code Online (Sandbox Code Playgroud)
Dumper输出是
{
'1' => [
[
'a1', …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Python 的子进程以非交互方式在 gdb 中执行几个命令。
我在 shell 中执行的等效命令是:
gdb - 9833 -ex "set someval=50" -ex "p someval" --batch
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
[Thread debugging using libthread_db enabled]
[New Thread 0x2b6c64f09dc0 (LWP 9833)]
[New Thread 0x549ec940 (LWP 12128)]
[New Thread 0x585f2940 (LWP 12127)]
: ...
0x0000003670407655 in pthread_join () from /lib64/libpthread.so.0
$1 = 50
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Python 中编写脚本以获得相同的输出时,不会执行 gdb 参数。我正在使用 cmdline args 来填充命令字符串。
当我打印输出时,我看到 gdb 附加到 pid 但我没有看到 gdb 打印输出,也没有执行设置。
这是我的脚本:
cmd = ['gdb','-',pid,'-ex','"set ' + sys.argv[2] + '=' + sys.argv[3] + '"','-ex','"p ' + …Run Code Online (Sandbox Code Playgroud)