请在下面帮助我,
我有
$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
答案 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"