我正在从这样的文件中读取数据
while (<$fh>)
{
@tmp = split; # <-- ?
push @AoA, [@tmp];
}
Run Code Online (Sandbox Code Playgroud)
我有几个问题.标记线有什么作用?它是否按行分割文件并将每行的元素存储到数组中?如果是这样,是否可以将@tmp转换为字符串或在@tmp上执行正则表达式?
基本上我想停止将数据推送到AoA上,如果我在文件中找到除空格或整数之外的任何内容.我已经有了正则表达式:\ ^ [\ s\d]*$ \
我正在尝试编写一个调用另一个脚本的Perl脚本,该脚本读取整个目录.我没有得到任何错误,但我也没有得到预期的结果.屏幕上没有任何内容.
我不需要在屏幕上输出任何内容.我在exec()
语句中调用的脚本应该将每个图像文件读入DIR
目录,并创建一个文件,用于存储从该图像中提取的一些数据.exec()
然后循环语句中的脚本,直到读取到目录中的所有图像.
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use CGI qw/:standard/;
use CGI::Carp 'fatalsToBrowser';
my $dir = '/FilesToRead/';
my $fichier;
my $ligne;
my $mimetype;
my @listeFichiers;
my $cgi = CGI -> new();
opendir (DIR, $dir) or die "Impossible d'ouvrir $dir: $!";
@listeFichiers = grep {/\.mem$/ && -f "$dir/$_"} readdir (DIR);
while (my $ouvRep = readdir(DIR))
{
foreach $fichier (@listeFichiers)
{
exec "v-file ./param.par ./Picture/$fichier -PM_overflow 3000000" or die "Script perl ne s'est …
Run Code Online (Sandbox Code Playgroud) 如何使用替换矩阵修改Smith-Waterman算法来对齐Perl中的蛋白质?
[引用需要]
伙计perl并不是那么容易我认为它是如此令人困惑的事情.我只是转移到操作员,我写了一些代码,但我无法弄清楚编译器如何处理它们.
$in = "42" ;
$out = "56"+32+"good";
print $out,;
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是88,好消息在哪里?现在让我们看看另一个.
$in ="42";
$out="good52"+32;
print $out ;
Run Code Online (Sandbox Code Playgroud)
对于这些,输出是32.问题是我们刚存储在$ out中的好处在哪里,以及""为什么编译器只是将值打印为32而不是剩余的文本之间的值52.另一个问题是
$in=52;
$in="52";
Run Code Online (Sandbox Code Playgroud)
做同样的工作"52"不作为文本工作.因为当我们添加"52"+32时它会给出84.发生了什么和
$in = "hello";
$in = hello;
Run Code Online (Sandbox Code Playgroud)
两者都做同样的工作?或者他们是否有所不同,但如果我打印然后给出相同的输出.它只是吃掉了我的大脑.它是如此令人困惑,因为当"52"或52和"你好"或你好做同样的工作为什么他们介绍"".我只是需要解释为什么它会发生在上面的代码上.
我正在寻找别人的代码,他们打开一个文件:
(open (FILEHANDLE,'/homedirectory/textfile.txt'))
Run Code Online (Sandbox Code Playgroud)
然后,他们将每行的内容放入一个变量进行处理(文件的每一行都包含由制表符分隔的数据):
while(<FILEHANDLE>) {
($var1, $var2, $var3, $var4) = split (/\t+/, $_);
Run Code Online (Sandbox Code Playgroud)
然后他做了类似的事情:
$index = join('_', $var1, $var2, $var3);
Run Code Online (Sandbox Code Playgroud)
然后做这个(我划伤脑袋的部分)
$contents = $filehandle{"$index"};
Run Code Online (Sandbox Code Playgroud)
我尝试打印出来$contents
,它看起来像是值$var1
,$var2
并且$var3
全部用分号分隔(例如" value1;value2;value3
").另外,我更改了FILEHANDLE
to 的名称FILEHANDLE2
并做了同样的事情$filehandle
,我得到了完全相同的结果,所以这让我相信它们是相关的.此外,当FILEHANDLE
单独离开并改变$filehandle
时$filehandle2
,什么都没有出现.任何帮助将不胜感激,因为我已经坚持了很长一段时间.另外,我是一个perl n00b ...(我主要用Python编程).
根据要求,这是一个更完整的代码版本:
sub myfn{
$filename = "home/textfile.txt";
open(FILEHANDLE, $filename) || die "Can't find filename\n";
while (<FILEHANDLE>) {
($var1, $var2, $var3) = split (/\t+/, $_);
$used_index = join ('_', $var1, $var2, …
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下内容的结构:
struct mystruct{
int id[10];
char text[40];
unsigned short int len;
};
Run Code Online (Sandbox Code Playgroud)
而我正试图将它解压缩到一行,如下所示:
my(@ids,$text,$length) = unpack("N10C40n",$buff) ;
Run Code Online (Sandbox Code Playgroud)
但是一切都是第一个数组(@ids),我已经尝试了模板" N10 C40 n
"和" (N10)(C40)(n)
"所以,要么这不能完成,要么我没有使用正确的模板字符串.
注意:我正在使用大端数据.
任何提示?
我正在努力创建一个脚本,为我创建图像库.
当我运行我所拥有的它告诉我
No such file or directory at photographycreate line 16.
------------
(program exited with code: 2)
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所获得的代码.
#!/etc/perl -w
#CHANGE THIS
$filecategory = "cooking";
$filenumber = 0;
#$filename = "photography";
$imagedirectory = "\"/media/New Volume/Programming/kai product/media/photography/".$filecategory."/images/\"";
$galleryfile = "\"/media/New Volume/Programming/kai product/pages/".$filenumber."_".$filecategory."_gallery.html\"";
@imagelocation = <$imagedirectory/*>; #*/
$filecount = @imagelocation;
while($filenumber < 3) {
open GALLERY, "+>", $galleryfile or die $!;
print GALLERY ($filecount."\n");
print GALLERY ($imagedirectory."\n");
print GALLERY ($galleryfile."\n");
close GALLERY;
++$filenumber;
}
Run Code Online (Sandbox Code Playgroud)
我想要它做的是创建文件,打开它,写东西,然后关闭/保存它.我怎么能用我所拥有的呢?
这是修复:
#!/etc/perl -w
use Fcntl; #The Module …
Run Code Online (Sandbox Code Playgroud) 我需要编写一个脚本来向我展示我在某些配置文件中设置的所有别名,如.tcshrc和一些私有脚本,以防我忘记别名的含义,如"a","b"等.配置文件中别名的格式是别名"别名a的内容"或别名b'别名b'的内容.
我写的代码如下:
#! /usr/bin/perl
open ( F , "<" , ".tcshrc" ) or die "can't open it; $! " ;
while ( <F> ) {
if ( /\b(alias\s+\w+\s+[\'\"][^\'\"]*[\'\"])/ ) {
print $1 ;
}
Run Code Online (Sandbox Code Playgroud)
但代码不起作用.那么你们中的任何人都可以查看代码并告诉我reqex有什么问题吗?
@KarelBílek是的,我错过了第二次反击,现在它奏效了.但我仍然有兴趣知道是否有更好的方法来编写正则表达式.
@Charles我想要匹配的行就像
alias a 'ls -l'
alias b "rm *"
Run Code Online (Sandbox Code Playgroud) 我知道这听起来像ServerFault的问题,但我知道开发人员经常在服务器挣扎时受到指责,所以我认为这里的帖子可能对那些仍在网络上使用Perl的人有用.
我们在旧的Apache服务器上出现了已解决过程的严重问题,因此我们决定迁移到Apache 2.新服务器执行得更好,不可否认.然而,测试显示,在负载很重(每分钟约100个用户)的情况下,已停止的进程会在服务器上快速启动,并且使用SSH很明显这些进程正在使用CPU.为了克服这些问题,我们决定采用CGI ::快速这是一个类型的FastCGI的Perl的.有了这个僵尸已经消失,但性能明智的服务器没有更好的应对.
结果让我认为,如果Apache 2无论如何都能有效地回收资源,那么实现CGI :: Fast并不是真的有意义.
你们中有没有人有过不同的结论吗?
我的任务是为在终端中运行此脚本的用户打印信息
我需要打印的信息是我从写作中获得的信息:
parted /dev/... print
Run Code Online (Sandbox Code Playgroud)
是否有任何文件具有相同的信息,所以我可以使用perl脚本打开并打印它,
如果不是我真的不知道如何获取有关哪个分区是"boot"
以及每个分区的大小的信息
感觉就像我一直在寻找互联网,也许我只是在寻找
正确的参数,但我迷路了,任何帮助表示赞赏