小编ado*_*ado的帖子

Perl数据结构:如何从数组创建数组引用

我有以下数据结构:

@keys = [1, 2, 3, 4];
Run Code Online (Sandbox Code Playgroud)

并使用循环(for)从14,我想创建像一个新的数据结构

$new = +{ key     => '1',
          meaning => '',
          time    => '', };
Run Code Online (Sandbox Code Playgroud)

所以,基本上我在这种情况下会有四个$new数据结构.

我需要使用地图功能吗?

perl

1
推荐指数
1
解决办法
109
查看次数

Shell:在带有echo的文件中打印""

我想添加以下行:

%optflags "-O2"
Run Code Online (Sandbox Code Playgroud)

在使用shell的a.txt文件中.我写的时候:

{ echo "%optflags "-O2""
    } >> a.txt
Run Code Online (Sandbox Code Playgroud)

它打印:

 %optflags -O2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

shell

1
推荐指数
1
解决办法
44
查看次数

Shell:将文件中的许多行写为sudo

我想使用Shell将/etc/my.conf中的行添加为"sudo".

如果没有以sudo身份登录,我可以这样做:

{ echo "[mysqld]"                                                                                                                                                                                                                                
  echo "default-character-set=utf8"
  echo "character_set_server=utf8"
  echo "[mysql]"
  echo "default-character-set=utf8"
} >> /etc/my.conf
Run Code Online (Sandbox Code Playgroud)

但当:

  sudo   { echo "[mysqld]"                                                                                                                                                                                                                                
  echo "default-character-set=utf8"
  echo "character_set_server=utf8"
  echo "[mysql]"
  echo "default-character-set=utf8"
  } >> /etc/my.conf
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

 sudo: {: command not found 
 character_set_server=utf8
 [mysql]
 default-character-set=utf8 .....
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

shell

1
推荐指数
1
解决办法
652
查看次数

如何测试散列的所有值是否等于给定值

我正在处理像哈希这样的哈希:

my %hash1 = (
  key1 => 0,
  key2 => 1,
  key3 => 0,
);
Run Code Online (Sandbox Code Playgroud)

如果所有值(不仅仅是一个值)的%hash1值为1,我想做点什么.

怎么写呢?

作为参考,我可以写:

for $key ( keys %hash1 ) {
   if ( $hash1{$key} == 1 ){
    #do something
   }
}
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为即使一个键的值等于1,#do something代码的一部分也会运行.我写的代码显然会做一些事情,如果至少有一个键等于1.这样的东西会很好:

for $key ( keys %hash1 ) {
   if ( exists( $hash1{$key} == 1 ) ){
    #do something
   }
}
Run Code Online (Sandbox Code Playgroud)

perl

1
推荐指数
1
解决办法
1329
查看次数

写作(A && C)|| (B && C)条件更短

(EG在Perl中)当条件A或条件B具有相同的结果时

if (A){
    # Consequence X
}elsif (B){
    # Consequence X
}
Run Code Online (Sandbox Code Playgroud)

我们可以写

if ( A || B ) {
     # Consequence X
}
Run Code Online (Sandbox Code Playgroud)

我们如何具备以下条件:当A和C为真,或者B和C为真时,结果C如下.

这可写得很长:

if ( A && C){
      # Consequence X
} elsif (B && C ){
      # consequence X
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法写这个更短?像这样的东西:

if ( (A && C) || (B && C) ) 
Run Code Online (Sandbox Code Playgroud)

语法上确定???

perl logic

1
推荐指数
1
解决办法
110
查看次数

在Perl的List :: Util的"shuffle"方法.如何"洗头"?

我倾向于使用shuffle方法随机化列表元素的顺序.例如,这是一个代替小游戏角色的代码:

 sub assign_roles {
       my ( $role_num_map ) = @_;
       my @roles;
       for my $role ( keys %$role_num_map ) {
         next if $role_num_map->{$role} == 0;
         push @roles, $role for ( 1 .. $role_num_map->{$role} );
       }
       my @shuffled_roles = shuffle @roles;
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是,"洗牌"如何使订单随机化?它使用什么方法? 如何从@shuffled_roles返回到$ role_num_map?

perl shuffle

1
推荐指数
1
解决办法
204
查看次数

使用以下格式的Perl时间:20130527

我正在寻找一种在Perl中生成以下内容的不太长的方法:

获取当前时间(月,日和年)的代码的一部分.例如,如果我们在2013年5月27日,那么输出应该是20130527

我现在认为,如果我们使用"本地时间",就像

$date_str = localtime;
Run Code Online (Sandbox Code Playgroud)

输出格式为:Wed Jul 18 07:24:05 2001还有其他特殊变量可用吗?

perl

0
推荐指数
2
解决办法
557
查看次数

Perl:设置环境变量而不触及代码

我有一个想要了解某些环境变量的perl文件.所以我可以补充一下:

$ENV{PLACK_ENV} = 'development'
Run Code Online (Sandbox Code Playgroud)

在代码和它的确定.

但有没有办法在不触及代码的情况下做到这一点?

ps:我正在使用linux

shell perl

0
推荐指数
1
解决办法
133
查看次数

0
推荐指数
1
解决办法
72
查看次数


Perl:make值%hash记住代码中值的位置

在Perl中:

 my %members = ( "fools"      => 6,                      
                 "monsters"    => 2,                      
                 "weirdos"       => 1,                      
                 "coders"    => 1,                                        
                 "betrayers"     => 1,   );     
Run Code Online (Sandbox Code Playgroud)

我写的时候:

 my @values_members = values %members;
Run Code Online (Sandbox Code Playgroud)

数组中元素的位置不会是6,2,1,1,1(代码中"出现"的位置).它将是随机的或接近随机的.

我想要一个这样的功能:

 my values_members = get_values_with_position_as_appears_in_code ( %members );
Run Code Online (Sandbox Code Playgroud)

 ( 6, 2, 1, 1, 1 );
Run Code Online (Sandbox Code Playgroud)

这可能吗?

perl

0
推荐指数
1
解决办法
113
查看次数

perl:在1和$ input之间给出非零整数的函数

我正在寻找(如何制作?)一个功能(模块?)

 my $scalar = 16;
 return function ($scalar);
Run Code Online (Sandbox Code Playgroud)

 @return = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 );
Run Code Online (Sandbox Code Playgroud)

也就是说,给出1和$标量之间的非零整数.

可以假设$ scalar是一个很大的数字,但我并不是特别寻找一个超级最优的解决方案.

perl

-2
推荐指数
1
解决办法
202
查看次数

-5
推荐指数
1
解决办法
1万
查看次数