小编Eri*_*sum的帖子

是否可以在一行中编写Perl foreach循环?

是否可以foreach在Perl中使用单行循环?

$hash{$thing}++ foreach my $thing (@things);
Run Code Online (Sandbox Code Playgroud)

我知道这可能与许多其他命令,如,

die "Invalid file!\n" if (open($Handle, "file.txt"));
Run Code Online (Sandbox Code Playgroud)

我知道开放的声明可能会破坏:)

perl foreach

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

Perl一行if语句

我有一个声明

$set eq "Y" ? $set = "N" : $set = "Y";
Run Code Online (Sandbox Code Playgroud)

但无论它总是如何设定 "N"

# Toggle setting
if ($set eq "Y")
{
   $set = "N";
}
else
{
   $set = "Y";
}
Run Code Online (Sandbox Code Playgroud)

为什么一个班轮看起来不起作用?

perl if-statement

12
推荐指数
4
解决办法
5万
查看次数

Java无符号字节[2]到int?

我需要做的就是将无符号的两字节数组转换为整数.我知道,我知道,Java没有无符号数据类型,但我的数字是假装无符号字节.

byte[] b = {(byte)0x88, (byte)0xb8}; // aka 35000
int i = (byte)b[0] << 8 | (byte)b[1];
Run Code Online (Sandbox Code Playgroud)

问题是没有正确转换,因为它认为那些是有符号的字节...如何将其转换回int?

java byte type-conversion

9
推荐指数
2
解决办法
1万
查看次数

如何读取和遍历inode

我在EXT2文件系统中打开了超级块和组描述符,但我不知道如何读取例如根目录或其中的文件...

这是我得到的一些东西

fd=open("/dev/sdb2", O_RDONLY);
lseek(fd, SuperSize, SEEK_SET);
read(fd, &super_block, SuperSize);
lseek(fd, 4096, SEEK_SET);
read(fd, &groupDesc, DescriptSize);
Run Code Online (Sandbox Code Playgroud)

但是下一部分似乎不起作用......

lseek(fd, super_block.s_log_block_size*groupDesc.bg_inode_table, SEEK_SET);
lseek(fd, InodeSize*(EXT2_ROOT_INO-1), SEEK_CUR);
read(fd, &root, InodeSize);
Run Code Online (Sandbox Code Playgroud)

c filesystems ext2

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

在Perl中,如何使用自定义排序对哈希键进行排序?

我正在尝试对文件的哈希工作,并且工作必须按特定顺序完成.大多数人会说列表可以像这样订购:

for my $k (sort keys %my_hash)
{
    print "$k=>$my_hash{$k}, ";
}
Run Code Online (Sandbox Code Playgroud)

不过,我需要非字母顺序,其实按键与一个字开始,然后_和他们去GdigitsL任何的M,P,R,T or D(例如word_G.txt,word_2.txt,..., word_P.txt).有没有办法按自定义顺序排序?

sorting perl hash foreach

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

如何打印Perl角色类?

我今天早上在代码审查中遇到了一些错误的代码,但我不明白为什么.

$line =~ /^[1-C]/;
Run Code Online (Sandbox Code Playgroud)

这行被假设为评估为1和之间的十六进制字符C,但我认为这一行不会这样做.问题不在于匹配,但这匹配的是什么?我可以打印出角色类中的所有角色吗?像下面的东西?

say join(', ', [1-C]);
Run Code Online (Sandbox Code Playgroud)

唉,

# Examples:
say join(', ', 1..9);
say join(', ', 'A'..'C');
say join(', ', 1..'C');

# Output
Argument "C" isn't numeric in range (or flop) at X:\developers\PERL\Test.pl line 33.

1, 2, 3, 4, 5, 6, 7, 8, 9
A, B, C
Run Code Online (Sandbox Code Playgroud)

regex perl character-class

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

Python ImportError:无法导入名称工具

我在运行脚本时遇到了这个问题,它似乎错过了一些依赖关系,但是如下所示。安装缺少的库后,这没有任何意义。

[ericfoss@maverick-fossum-ddns-net packages]$ python -c "import utils"
[ericfoss@maverick-fossum-ddns-net packages]$ python -c "import requests"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 64, in <module>
    from . import utils
ImportError: cannot import name utils
[ericfoss@maverick-fossum-ddns-net packages]$ 
Run Code Online (Sandbox Code Playgroud)

知道为什么utils可以导入,但requests不能导入吗?

python python-import python-2.7

5
推荐指数
2
解决办法
3万
查看次数

为什么我的Perl脚本不使用我的模块?

module.pm

package module;
use 5.012;
use warnings;

sub Parse
{
   return 1;
}

1;
Run Code Online (Sandbox Code Playgroud)

script.pl

#!/usr/bin/perl -w

use 5.012;
use warnings;
use lib 'C:/';
use module;

print Parse("value");
Run Code Online (Sandbox Code Playgroud)

标准输出

Undefined subroutine &main::Parse
Run Code Online (Sandbox Code Playgroud)

perl perl-module subroutine

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

Perl,如何创建map/grep like子例程?

我想创建一个类似grep {} @map {} @可以处理代码和/或布尔输入的子例程.不知何故互联网没有太多的信息.

我尝试在下面创建子,但它甚至无法处理第一次测试.我收到了错误Can't locate object method "BoolTest" via package "input" (perhaps you forgot to load "input"?) at C:\path\to\file.pl line 16..

这怎么认为它是一个对象?我没有正确创建BoolTest吗?

# Example senarios
BoolTest { 'input' =~ /test[ ]string/xi };
BoolTest { $_ =~ /test[ ]string/xi } @array;
BoolTest(TRUE);

# Example subroutine
sub BoolTest
{
   if ( ref($_[0]) == 'CODE') {
       my $code = \&{shift @_}; # ensure we have something like CODE
       if ($code->()) { say 'TRUE'; } else …
Run Code Online (Sandbox Code Playgroud)

perl arguments

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

How-To Perl递归正则表达式

我有一个我需要测试的设备的输出,主要是响应是一行,但有时它是两行.我用简单的正则表达式处理一行或两行来处理

if ($prompt =~ /(\s.*?)\r\n(.*)/)
{
   Note('Multiline '.$string);
   TestPrompt($string, $1);
   TestPrompt($string, $2);
}
else
{
   TestPrompt($string, $prompt);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果响应超过两行呢?这段代码无法处理额外的行,我想在我的设计中保持健壮.有没有办法从正则表达式中捕获foreach

regex testing perl prompt functional-testing

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