小编rug*_*ted的帖子

Perl中正则表达式中&符号的用法是什么?

伙计我在Perl中有这个正则表达式,我不明白.

s/\w+$/($`!)$&/;
Run Code Online (Sandbox Code Playgroud)

原来的字符串是

"huge dinosaur"
Run Code Online (Sandbox Code Playgroud)

在执行正则表达式之后,字符串现在是:

"huge (huge !)dinosaur"
Run Code Online (Sandbox Code Playgroud)

我完全不明白这是怎么回事.我不明白&符号在那里做什么.我理解$`,但为什么它就在那里,我知道$`在匹配前获取值,这是我认为没有,因为在上面的正则表达式之前没有匹配的表达式.

如果有人可以链接我一些关于Perl正则表达式的非常有用的教程,我真的很感激.

谢谢

编辑:我现在明白了&符号意味着什么,它保存了比赛和$`在比赛前保存了价值,现在我不理解的是整个部分:

($`!)$&
Run Code Online (Sandbox Code Playgroud)

这个部分是怎么变成的

(huge !)
Run Code Online (Sandbox Code Playgroud)

regex perl

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

如何在vim中递归打开带有模式的文件

伙计们如何使用单个命令在vim中打开多个文件?

我要打开的这些文件有某种模式,例如:

myfile1dsa
myfile2dsdas
myfile3xzczxcz
Run Code Online (Sandbox Code Playgroud)

还有这些打开的文件在我的vim窗口中创建自己的选项卡吗?

并且超出主题问题:

什么" - "在linux命令中意味着什么?它与" - "的区别如何?

例:

grep --color 'data' fileName
Run Code Online (Sandbox Code Playgroud)

linux vim

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

如何在屏幕linux中移动到行尾

如果CTRL+A+ a是如何移动到屏幕中一行的开头那么除了End屏幕中的键之外,什么是快捷键到达行尾.

我在vim中尝试过CTRL+A+ I.没运气.

另外OT:如果退出shell,会话会持续吗?

linux gnu-screen

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

什么是Linux中的$ PATH以及如何修改它

我对Linux中的这个$ PATH有几个问题.

我知道它告诉shell哪些目录要搜索可执行文件,所以:

  1. 环境变量是什么意思?
  2. 如何改变它的路径?是否建议改变它?
  3. 如果我改变它会产生什么后果?

linux path

10
推荐指数
2
解决办法
4万
查看次数

vim中术语"缓冲区"和"窗口"的含义是什么?

嗨,我是vim的新手,我不知道缓冲区和窗口是什么.我找不到任何关于如何理解这两个的教程,所以这是我的问题:

  1. 什么是缓冲区,它与窗口有什么不同?
  2. 缓冲区可以用于什么?和窗口(我假设它只是为了编辑)?
  3. 我在哪里可以找到关于如何使用缓冲区和窗口的好教程?

vim

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

如何在Perl中使用模块

伙计们真的很困惑如何使用我刚安装在Perl中的模块.

我在Perl中安装了Corelist模块.我想显示Perl 5.006附带的所有模块.但是通过使用我不理解的代码有一个暗示:

my %modules = %{ $Module::CoreList::version{5.006} };
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

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

my %modules = %{$Module::CoreList::version{5.006}};

print %modules;
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误:Module::CoreList::version used only once.我也尝试过 use Module::CoreList;仍然没有运气

perl perl-module

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

如何在Perl中通过正则表达式替换

假设我想用"橙色"替换"apple"这个词,用"apple"替换"orange"这个词,我怎样通过正则表达式在Perl中做到这一点?

这是我的代码,我没有运气:

while (<MYFILE>) {
    if (/apple/i) {
        s/$&/orange/i;
    }

    if(/orange/i) {
        s/$&/apple/i;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,我想如果有某种方法来终止if函数,如果它是成功的,并且不再执行代码强制它返回到while循环.但我确定这是一种简单的正则表达方式.

regex perl

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

在vim Linux中向上删除行

如何在vim中这样做,让我说在100行,我想向上删除20行?在vim linux中该怎么做?

linux vim

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

这些目录在linux中是做什么用的?etc/ bin/ 和 lib/

伙计们,这些库在 linux 中有什么用?

/etc/
/lib/
/bin/
Run Code Online (Sandbox Code Playgroud)

小心解释每个?

linux

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

在perl中使用stat时$ mode会保存什么

伙计们试图使用stat查看perl中某个文件的权限.

所以当我这样做的时候

foreach (@original_files) {
    my($dev, $ino, $mode, $nlink, $uid, $gid, $rdev,
      $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat ($_);

    print "$mode \n";
}
Run Code Online (Sandbox Code Playgroud)

这个输出:

33204 which corresponds to the permission -rw-rw-r--
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它是33204. < - 这是我的第一个问题

接下来我尝试将$ mode转换为octal,我知道这是umask的数字系统.

这是我的代码:

printf ("%0\n",$mode);
Run Code Online (Sandbox Code Playgroud)

现在这输出100664,我完全低于最后3位数(rw-rw-r--)但我不明白前三位数来自哪里(100664中的100) 这是我的第二个问题

最后是我再次尝试此代码:

printf ("%o\n", $mode & 775); #im not sure about the 775, or is it 577
Run Code Online (Sandbox Code Playgroud)

最后一个代码是我想要的.它输出664.我的问题是为什么当我和$模式忘记了价值(775或其他)时,它会输出正确的权限.

而OT问题:$ _和@_的区别是什么

perl

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

标签 统计

linux ×5

perl ×4

vim ×3

regex ×2

gnu-screen ×1

path ×1

perl-module ×1