小编DVK*_*DVK的帖子

在Perl中计算一列中每个值的总和

我有多列的制表符分隔数据.

我在第31列中有操作系统名称,在第6列和第7列中有数据字节.我想要做的是计算每个唯一操作系统的总容量.

所以,我在Perl中做了这样的事情:

#!/usr/bin/perl
use warnings;

my @hhfilelist  = glob "*.txt";
my %count = ();

for my $f (@hhfilelist) {
    open F, $f || die "Cannot open $f: $!";
    while (<F>) {
        chomp;
        my @line = split /\t/;
        # counting volumes in col 6 and 7 for 31
        $count{$line[30]} = $line[5] + $line[6];     
    }
    close (F);
}

my $w = 0;

foreach $w (sort keys %count) {
    print "$w\t$count{$w}\n";
}
Run Code Online (Sandbox Code Playgroud)

所以,结果会是这样的

Windows    100000
Linux        5000
Mac OSX     15000
Android      2000 …
Run Code Online (Sandbox Code Playgroud)

perl parsing

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

2d STL矢量typeid

我有各种2D向量,我想在运行时查询它们的不同类型.

看来这可能在"空"向量上,例如:

vector<vector<float> > myVec;
cout << (typeid(myVec[0][0]).name() << endl;
Run Code Online (Sandbox Code Playgroud)

上面返回"浮动",虽然我期待一个例外,因为我没有推回任何元素.

只是运气,在[0][0]没有任何边界检查或迭代器访问内存时它成功了吗?或者向量在声明时分配一些基线存储?

c++ vector typeid

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

使用AnyAttribute的Xml Schema,将属性添加到特定元素

如果anyattribute我的架构中有两个带< />元素的元素,如下所示:

<xs:element name="NodeType1">
  <xs:complexType>
    <xs:anyAttribute />
  </xs:complexType>
</xs:element>

<xs:element name="NodeType2">
  <xs:complexType>
    <xs:anyAttribute />
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

是否可以在另一个模式中仅扩展其中一个元素?假设我只想添加一个属性NodeType2.

xsd

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

检查字符串是否在列表中最优雅/惯用的方法是什么?

在Java中,检查字符串是否在列表中的最优雅/惯用方法是什么?

例如,如果我有String searchString = "abc"; List<String> myList = ....,那么Java与我在Perl中所做的相同:

my $isStringInList = grep { /^$searchString$/ } @myList;
# or in Perl 5.10+
my $isStringInList = $searchString ~~ @myList;
Run Code Online (Sandbox Code Playgroud)

java string list

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

是否有可能检测到哪个管道扔了一个SIGPIPE?

我正在尝试处理如下工作的服务器:

  • 它有一个父进程
  • 它创建了一个"帮助"子进程来处理一些特殊任务
    • 它用管道打开子进程; 并使用管道向子项发出命令.
  • 它还会产生许多其他子进程(服务器的主要目标是执行各种命令).

我希望能够检测到子进程的管道写入何时失败; 并发出特别通知.

通常,我会通过$SIG{PIPE}在父进程中创建自定义处理程序来实现这一点.

但是,我关心的是,父启动执行命令的某些进程可能会打开自己的管道; 如果写入THOSE管道失败,我想简单地忽略SIGPIPE.

Q1.有没有办法让我从SIGPIPE处理程序中告诉,哪个打开的管道发出了信号?(我知道每个孩子的PID,所以PID会很好......或者如果有办法通过文件描述符#s?).

Q2.我可以用local $SIG{PIPE}某种方式解决问题吗?我的假设是我需要:

  • local $SIG{PIPE}在写入该管道之前设置特定于助手进程的权限
  • do print $HELPER_PIPE(这只发生在一个子程序中)
  • 将$ SIG {PIPE}重置为DEFAULTIGNORE
  • 确保这3个操作都在自己的块范围内.

perl ipc pipe sigpipe

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

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

打破子程序

什么是打破子程序并继续处理脚本其余部分的最佳方法?

#!/usr/bin/perl
use strict;
use warnings;

&mySub;

print "we executed the sub partway through & continued w/ the rest 
of the script...yipee!\n";

sub mySub{

    print "entered sub\n";

    #### Options
    #exit; # will kill the script...we don't want to use exit
    #next; # perldoc says not to use this to breakout of a sub
    #last; # perldoc says not to use this to breakout of a sub
    #any other options????

    print "we should NOT see this\n";

}
Run Code Online (Sandbox Code Playgroud)

perl

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

函数如何将其参数列表作为数组引用返回

我如何编写一个返回其参数作为数组引用的函数?

perl

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

我之前问了一个关于数组的问题,但是这个不会编译

不久前我问过这个阵列,我看不出是什么问题.太累了.我做错了什么?基本上,我正在使用字符串数组并尝试检查它是否包含数字或x(ISBN号验证).我想从给定输入(bookNum)中获取数字,检查输入,并将任何有效输入提供给新数组(书).在线

'bookNum.charAt[j]==book[i]'
Run Code Online (Sandbox Code Playgroud)

我得到'不是声明错误'.是什么赋予了?

  String[] book = new String [ISBN_NUM];
  bookNum.replaceAll("-","");
  if (bookNum.length()!=ISBN_NUM)
    throw new ISBNException ("ISBN "+ bookNum + " must be 10 characters");
  for (int i=0;i<bookNum.length();i++)
  {
      if (Character.isDigit(bookNum.charAt(i)))
      bookNum.CharAt[j]==book[i];
      j++;
      if (book[9].isNotDigit()|| 
          book[9]!="x"        ||
          book[9]!="X")
      throw new ISBNException ("ISBN " + bookNum + " must contain all digits" + 
                               "or 'X' in the last position");
Run Code Online (Sandbox Code Playgroud)

java

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

添加数组列表perl

我有一个由空行分隔的数字列表的文本文件给出如下─我想添加的所有第一(20.187 + 19.715 + 20.706 ...),第二个元素(15.415 + 14.726 + 15.777)等获得每个元素的总数为1,第2,第3等

20.187 15.415  8.663  6.001  6.565  6.459  6.564 ..

19.715 14.726  8.307  5.833  6.367  6.089  6.444 ..

20.706 15.777  9.185  6.546  7.327  7.172  7.084 ...
Run Code Online (Sandbox Code Playgroud)

因为它们是*不列排列*我怎么能加起来数组中的元素.

perl perl-data-structures

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

标签 统计

perl ×5

java ×2

c++ ×1

ipc ×1

list ×1

mongodb ×1

mongomapper ×1

parsing ×1

perl-data-structures ×1

pipe ×1

sigpipe ×1

string ×1

typeid ×1

vector ×1

xsd ×1