String 如何在perl中将字符串分成两部分

String 如何在perl中将字符串分成两部分,string,perl,divide,String,Perl,Divide,所以我需要用perl将我的字符串分成两部分。例如,我有: $string = "../dira/dirb/*.txt" 我想把它分为: $stringA = "../dira/dirb" $stringB = "*.txt" 但如果我有: $string = "dira/dirb/dirc/.../dirn/test.pl"; 我想谈谈: $stringA = "dira/dirb/dirc/.../dirn" $stringB = "test.pl" 有人知道我该怎么做?我试着做一些类

所以我需要用perl将我的字符串分成两部分。例如,我有:

$string = "../dira/dirb/*.txt"
我想把它分为:

$stringA = "../dira/dirb"
$stringB = "*.txt"
但如果我有:

$string = "dira/dirb/dirc/.../dirn/test.pl";
我想谈谈:

$stringA = "dira/dirb/dirc/.../dirn"
$stringB = "test.pl"
有人知道我该怎么做?我试着做一些类似的事情:

$howmany++ while $string =~ m/\//g;

所以我知道我被砍了多少刀。但我不知道我还能做些什么://

你可以试试这样的东西:

$string =~ m|^(.*)/(.*)$|;
($stringA,$stringB) = ($1,$2);
print "stringA = $stringA\n";
print "stringB = $stringB\n";
=编辑:=

限制为
stringB
的某些值:

if($string =~ m|^(.*)/(.*\.pl)$|) {
    ($stringA,$stringB) = ($1,$2);
    print "stringA = $stringA\n";
    print "stringB = $stringB\n";
}

您可以尝试以下方法:

$string =~ m|^(.*)/(.*)$|;
($stringA,$stringB) = ($1,$2);
print "stringA = $stringA\n";
print "stringB = $stringB\n";
=编辑:=

限制为
stringB
的某些值:

if($string =~ m|^(.*)/(.*\.pl)$|) {
    ($stringA,$stringB) = ($1,$2);
    print "stringA = $stringA\n";
    print "stringB = $stringB\n";
}
使用:

使用:

您可以使用函数解析文件路径:

#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;

my $string = "../dira/dirb/*.txt";
my $stringA = dirname($string);
my $stringB = basename($string);

printf "String A: %-25sString B: %s\n", $stringA, $stringB;

$string = "dira/dirb/dirc/.../dirn/test.pl";
$stringA = dirname($string);
$stringB = basename($string);

printf "String A: %-25sString B: %s\n", $stringA, $stringB;
您可以使用函数解析文件路径:

#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;

my $string = "../dira/dirb/*.txt";
my $stringA = dirname($string);
my $stringB = basename($string);

printf "String A: %-25sString B: %s\n", $stringA, $stringB;

$string = "dira/dirb/dirc/.../dirn/test.pl";
$stringA = dirname($string);
$stringB = basename($string);

printf "String A: %-25sString B: %s\n", $stringA, $stringB;

谢谢你的帮助,但我忘了说我不能使用像“use XXX::YYY”:PThanks这样的帮助,但我忘了说我不能使用像“use XXX::YYY”:PDo这样的帮助。你可能知道我如何使用stringB,例如“*.pl”?我的意思是,我想把*符号打印成stringB:P,因为当我使用例如:“perl lab2.pl./e.pl”时它工作正常,并显示“.”作为stringA和“e.pl”作为stringB。但是,当我使用“perl lab2.pl./*.pl”时,它显示了我“.”作为stringA和“lab2.pl”作为stringB,我想将“*.pl”作为stringB。你可能知道我如何使用作为stringB例如“*.pl”?我的意思是,我想打印*符号作为stringB:P,因为当我使用例如:“perl lab2.pl./e.pl”时,它工作正常,并显示给我“.”作为stringA和“e.pl”作为stringB。但是,当我使用“perl lab2.pl./*.pl”时,它将“.”显示为stringA,“lab2.pl”显示为stringB,我希望将“*.pl”显示为stringB。