2013-12-05 2 views
0
push @hex_locations, glob("$ptxdist_env->{root}/project/platform-$PLATFORM-$BUILD_SUBTYPE/build-target/gnss-*"); 
push @hex_locations, glob("$ptxdist_env->{root}/project/platform-$PLATFORM-$BUILD_SUBTYPE/build-target/gps-q6image-*"); 
push @hex_locations, glob("$ptxdist_env->{root}/project/platform-$PLATFORM-$BUILD_SUBTYPE/build-target/hexagon-infra-*"); 
push @hex_locations, glob("$ptxdist_env->{root}/project/platform-$PLATFORM-$BUILD_SUBTYPE/build-target/tfcs-*"); 

Есть ли лучший способ сделать это, например, дать ему одну строчку вместо 4? Мне пришлось использовать glob, поскольку в конце он имеет подстановочный знак, когда я пытаюсь использовать его в одной строке, glob жалуется на слишком много аргументов.Передача дополнительных аргументов функции glob в perl

спасибо.

ответ

1

Вот четыре:

  1. my @hex_locations = (
        glob("$base/gnss-*"), 
        glob("$base/gps-q6image-*"), 
        glob("$base/hexagon-infra-*"), 
        glob("$base/tfcs-*"), 
    ); 
    
  2. my @hex_locations = glob(join(' ', 
        "$base/gnss-*", 
        "$base/gps-q6image-*", 
        "$base/hexagon-infra-*", 
        "$base/tfcs-*", 
    )); 
    
  3. my @hex_locations = map glob("$base/$_-*"), 
        qw(gnss gps-q6image hexagon-infra tfcs); 
    
  4. my @hex_locations = glob("$base/{gnss,gps-q6image,hexagon-infra,tfcs}-*"); 
    
0

Вы можете попробовать:

my @loc = ("gnss-*","gps-q6image-*","hexagon-infra-*","tfcs-*"); 

for (@loc) { 
    push @hex_locations, glob("$ptxdist_env->{root}/project/platform-$PLATFORM-$BUILD_SUBTYPE/build-target/$_"); 
} 
Смежные вопросы