我习惯了perl和R的新手.我知道你可以阅读整个表格,read.table()但我想知道如何使用R来解析输入文件中的一行.
具体来说,什么相当于以下perl片段:
open my $fh, $filename or die 'can't open file $filename';
my $line = <$fh>;
my ($first, $second, $third) = split ("\t", $line);
Run Code Online (Sandbox Code Playgroud) 我总是想知道为什么我必须写
foreach my $x (@arr)
Run Code Online (Sandbox Code Playgroud)
代替
foreach my $x @arr
Run Code Online (Sandbox Code Playgroud)
括号的目的是什么?
我正在使用SGE(Sun Grid Engine)向网格提交作业.我还perlbrew用来管理我安装的Perl版本.我写了一些简短的sh脚本,用于运行perl脚本,需要特定的Perl版本(5.12.2),如下所示:
#!/bin/bash
#$-S /bin/bash
source /home/dave/.bash_profile
/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2
/home/dave/scripts/proc_12.pl --in=/home/dave/in/in.store --dir=/home/dave/in/dir2 --params=/home/dave/in/params.p
Run Code Online (Sandbox Code Playgroud)
现在,当我提交单个作业时,一切正常,但是当我提交很多时,我开始收到perlbrew相关的错误消息,例如:
ln: creating symbolic link `current' to `perl-5.12.2': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan2dist' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan2dist': File exists
ln: cannot remove `/home/dave/perl5/perlbrew/bin/cpanp': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/enc2xs': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/find2perl': No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以我猜这/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2 …
我是一个绝对的新手,Moose到目前为止我已阅读Moose和大部分的食谱.
有一些我没有得到的东西.我创建了以下包:
package MyRange;
use Moose;
use namespace::autoclean;
has [ 'start', 'end' ] => (
is => 'ro',
isa => 'Int',
required => 1,
);
__PACKAGE__->meta->make_immutable;
1;
Run Code Online (Sandbox Code Playgroud)
然后:
use MyRange;
my $br = MyRange->new(
start => 100,
end => 180
);
Run Code Online (Sandbox Code Playgroud)
现在我可以使用eg访问我的字段$br->{start},但我也可以使用例如修改它们(尽管它们是"只读")$br->{start}=5000.我还可以添加新的密钥$br->{xxx}=111.
我错过了什么吗?对象不是以某种方式受到保护吗?这是什么意思ro?
对不起Java术语,但我如何重载Moose构造函数?
假设我代表一个细分市场.我可以采取起点和点,或起点和长度,或终点和长度.
我怎样才能允许这种替代施工方法?
可能重复:
如何在Perl中找到用户的主目录?
我正在运行Ubuntu.
每当我传递Perl脚本时,以~(例如~/Documents/file.txt)它开始的路径都找不到它.我必须通过规范路径(例如/home/dave/Documents/file.txt).
这是为什么?
我可以让Perl识别~路径吗?
UPDATE
所有建议的解决方案都包括更改脚本中的代码.我想要一个不会对脚本本身进行任何更改的解决方案(因为并非所有这些都是我的).也许是Bash的工作方式?
问题的更新版本发布在超级用户.
我正在按照语法指南中表格部分的指南编写Multimarkdown表,我希望使用Text :: MultiMarkdown将它们转换为HTML .
它工作得很好,唯一的问题是我无法弄清楚如何控制表的格式(显示边框,对齐标题,字体大小等).
我有一个包含一组元素的数组.元素的顺序是无关紧要的 - 我使用数组,因为它是我在Perl中知道的最简单的数据结构.
my @arr = ...
while (some condition) {
# iterate over @arr and remove all elements which meet some criteria
# (which depends on $i)
}
Run Code Online (Sandbox Code Playgroud)
我知道,splice()但我认为在迭代时使用它并不好.delete对于数组元素似乎已弃用.也许用grep在@arr为自己(@arr = grep {...} @arr)?
这里的最佳做法是什么?
也许使用哈希(虽然我真的不需要它)?
我正在使用Text :: MultiMarkdown从MultiMarkdown文档创建HTML文件.
我希望所有链接都在新标签中打开.
有没有办法使用CSS模板配置此行为,或直接在MultiMarkdown文档中配置此行为(没有在MultiMarkdown文档中的每个链接周围显式编写HTML)?