我希望水平连接字符串单元格数组的行,如下所示.
start = {'hello','world','test';'join','me','please'}
finish = {'helloworldtest';'joinmeplease'}
Run Code Online (Sandbox Code Playgroud)
是否有任何内置函数可以完成上述转换?
我正在尝试将s/ / /g正则表达式存储为变量(没有太多运气).
这是一个使用常规匹配来显示我打算做什么的示例.
my %file_structure = (
header => qr/just another/,
table => qr/perl beginner/,
)
Run Code Online (Sandbox Code Playgroud)
现在我可以使用$line =~ $file_structure{'header'}它来调用它,它将返回undef,或者true如果模式匹配.
不过我想说$line =~ $file_structure{'foo'}哪里$file_structure{'foo'}有类似的东西s/beginner/hacker/g.
您使用哪些自定义VIM键绑定来提高工作效率?这是我最喜欢的两个.
inoremap jj <Esc>
" Clear screen clears search highlighting.
nnoremap <C-L> :nohl<CR><C-L>
Run Code Online (Sandbox Code Playgroud) 我希望有一个包含对子函数的引用的哈希,我可以根据用户定义的变量调用这些函数,我将尝试给出一个我正在尝试做的简化示例.
my %colors = (
vim => setup_vim(),
emacs => setup_emacs(),
)
$colors{$editor}(arg1, arg2, arg3)
Run Code Online (Sandbox Code Playgroud)
where setup_vim()和setup_emacs()将是我的文件中稍后定义的子函数,并且$editor是用户定义的变量(即vim或emacs).这可能吗?我无法让它工作,或找到有关该主题的良好信息.谢谢.
(注意我现在已经实现了它作为一个工作的Switch,但我认为像上面这样的哈希会更容易在现有代码中添加新条目)
好吧,作为序言,这个问题可能比我正常的问题更"愚蠢" - 但是这个问题在过去的几天一直让我讨厌,所以无论如何我都会问它.我将举例说明我的问题是什么,所以我希望将其概括为我当前的问题.
#!/usr/bin/perl -w use strict;
use Test::More 'no_plan';
my $fruit_string = 'Apples cost $1.50';
my ($fruit, $price) = $fruit_string =~ /(\w+)s cost \$(\d+\.\d+)/;
# $price += 0; # Uncomment for Great Success
is ($price, 1.50, 'Great Success');
Run Code Online (Sandbox Code Playgroud)
现在,当这个运行时,我得到了消息
# Failed test 'Great Success'
# got: '1.50'
# expected: '1.5'
Run Code Online (Sandbox Code Playgroud)
为了使测试工作 - 我要么取消注释注释行,要么使用is ($price, '1.50', 'Great Success').这两个选项对我都不起作用 - 我正在使用Test :: Deep和cmp_deeply测试大量嵌套数据.我的问题是,如何从正则表达式中提取双精度然后立即将它作为双精度使用 - 或者如果有更好的方法让我知道 - 并随意告诉我从事园艺或其他事情,学习Perl是硬.
我正在使用VIM 7.1.314,并希望(chris, robert, ben)尽可能快地在下面显示的代码中抽出名字- 我将如何实现这一目标?请注意,名称始终对齐(无论用户编号如何).
user 1: chris (05/04/1984)
user 2: robert (11/12/1991)
user 3: ben (5/25/1993)
Run Code Online (Sandbox Code Playgroud)
还要注意,我正在寻找一个有数百个名称的解决方案,因此可扩展性非常重要.
我无法找到解决方案,它让我疯狂!
my $foo = qr/(\S+) (\X+)/;
my $bar = qr/$2/;
line =~ s/$foo/$bar/g
Run Code Online (Sandbox Code Playgroud)
我的问题是$bar使用先前定义的值$2而不是(\X+).
我创建了一个子函数,它返回对包含7-8个变量的属性哈希的引用.每当我想访问一个元素时,我要么重新定义它,my $n_players = $ref_attr->{'n_players'}要么直接调用它$ref_attr->{'n_players'}.我宁愿使用所有重新定义的变量(第一种情况)但是这需要7-8行初始化并使我的代码混乱.
是否有一个模块(我似乎无法找到)或导出散列键用作变量的好方法?
那里 - 刚刚开始学习 Perl。
这就是我正在做的将数组放入子函数中的过程 - 可以在 1 行中更简单地完成吗?
sub my_sub {
my $ref_array = shift;
my @array = @$ref_array;
}
Run Code Online (Sandbox Code Playgroud)