1

サンプルコードは次のとおりです。

my $test = "Mike Xavier Smith/123-45-1111/student";
my $name = substr( $test, 0, index($test, "/") );
my $ssn = substr( $test,index($test,"/"));
my $type = substr( $test,index($test, "/", 2) );
print "$name, $ssn, $type \n";
exit;

出力: マイク・ザビエル・スミス、/123-45-1111/学生、/123-45-1111/学生

この行 substr( $test,index($test, "/", 2) ); #offset は、/student を出力する必要があることを意味する "/" の 2 番目のオカレンスからである必要があります。
しかし、なぜ「/」の最初の出現から印刷されるのでしょうか?

4

1 に答える 1

8

それは、の3番目の議論がまったく何であるかではありませんindex

my $test = "Mike Xavier Smith/123-45-1111/student";

my $start = 0;
my $end   = index($test, "/", $start);
my $name  = substr($test, $start, $end);

$start  = $end+1;
$end    = index($test, "/", $start);
my $ssn = substr($test, $start, $end);

$start  = $end+1;
$end    = index($test, "/", $start);
my $type = substr($test, $start, $end);

print "$name, $ssn, $type\n";

ほとんどの人はただ使うでしょうsplit

my $test = "Mike Xavier Smith/123-45-1111/student";
my ($name, $ssn, $type) = split(qr{/}, $test);
print "$name, $ssn, $type\n";
于 2012-10-04T06:35:36.943 に答える