perl中的split函数

时间:2010-03-08 14:19:16

标签: perl split

请在下面帮助我,
 我有

    $sub = C:\views\sght\gzad\text\hksdk\akldls\hool.java
         = C:\views\sght\bdsk\text\hksdfg\sdjks\same.java
         = C:\views\jdjk\jhah\fjd\afhlad\sitklds\hgls.jsp

我需要用“。”替换每个“\” 我需要拆分$ sub这样的方式 如果$ sub包含“text”,则分割,一个变量包含文本之后的后一部分,如 -

$var1 =text.hksdk.akldls.hool.java
       text.hksdfg.sdjks.same.java

否则

$var2= views.jdjk.jhah.fjd.afhlad.sitklds.hgls.jsp

2 个答案:

答案 0 :(得分:0)

你的'$ sub ='赋值语句令人困惑。这是一个以空格分隔的路径的标量吗?

我是否认为您想要采用$ sub中列出的路径并将带有“text”的路径放入一个列表而不将其放入另一个列表中是正确的?

假设以上所有:

my $sub = ""; # initialize this however you will.

my @paths = split(/ /, $sub); # space-separated paths to list

my (@with_text, @without);
foreach my $p (@paths){
    $p =~ s/\\/./g;              # replace \ with .
    if($p =~ /text/){
        push(@with_text, $p);
    } else{
        push(@without, $p);
    }
}

my $var1 = join(' ', @with_text); # a space-separated list of paths containing 'text'
my $var2 = join(' ', @without); # a space separated list of paths not containing 'text'

答案 1 :(得分:0)

  

我需要用“。”替换每个“\”。

您可以使用$text对名为$text =~ s/\\/./g的变量执行此操作 - 请参阅perldoc perlop

  

我需要拆分$ sub这样一种方式,如果$ sub包含“text”然后拆分,一个变量包含文本后面的部分

这是split()函数的直接应用(请参阅perldoc -f split):

my $sub = "foobarbaz";
my @split = split /(bar)/, $sub;
# $split[0] will contain "foobar"
# split[1] will contain "baz"