Я хочу разбить путь, может ли кто-нибудь мне помочь?Как разбить путь в perl с полным именем файла?
Мой вход:
$getpath = "/u/project/path/file.name";
Я хочу разделить /u/project/path
одной переменной и file.name
в другой переменной.
Я хочу разбить путь, может ли кто-нибудь мне помочь?Как разбить путь в perl с полным именем файла?
Мой вход:
$getpath = "/u/project/path/file.name";
Я хочу разделить /u/project/path
одной переменной и file.name
в другой переменной.
File::Basename может помочь вам извлечь информацию вам нужно (и является частью основных модулей)
my($filename, $directories, $suffix) = fileparse($path);
my($path, $file) = $getpath =~ m{(.+)/([^/]+)$};
Есть хорошие модули кросс платформенные для этого тоже, см Path::Tiny и File::Spec.
Thank U .. На самом деле я только начал перл и обучения вещи .. спасибо за ур поддержки !! :) –
my $getpath = "/u/project/path/file.name";
my @arr=split /\//,$getpath;
my $filename=$arr[(scalar(@arr))-1]; #will give you the filename
my $path_no_filename= join "/",@arr[0..(scalar(@arr)-2)]; #will give everything except the filename
Вы можете использовать отрицательные индексы для доступа к элементу с конца: '$ filename = $ arr [-1]' и использовать неявный скалярный контекст для арифметических операторов для диапазона: '$ path = join '/', @ обр [0 .. @ обр-2] '. Но может быть более элегантно сказать '$ filename = pop @arr; $ path = join '/', @ arr'. – amon
Если кто-то не хочет использовать модули, я думаю, тогда это лучший способ изучить программирование. Спасибо за поддержку! :) –
Меня просто интересовало решение на основе регулярных выражений: мне нужно строить имена из путей. – Wolf
Прежде всего, есть много Perl модули могут делать то, что вы хотите, попробуйте найти на CPAN. Во-вторых, я предлагаю использовать модуль File :: Spec. Например:
use File::Spec;
($volume,$directories,$file) = File::Spec->splitpath($path);
тогда $ каталоги будут "/ и/проект/путь", и $ файл будет "file.name".
Файл :: Spec модуль рассчитан на пять операционных систем: Unix (Linux), Mac, Win32, OS2, VMS. И этот модуль также предлагает множество других операций с файлами, таких как catpath, updir, file_name_is_absolute и т. Д. Вам не нужно менять свои коды на разные системы.
Ref: File::Spec
Спасибо u .. На самом деле я только что начал перл и изучал вещи. Большое спасибо за поддержку! :) –
@Mak_Thareja Добро пожаловать, и добро пожаловать в фантастический мир Перла :) – noalac
Ya кажется фантастическим –
Спасибо, у .. На самом деле я только что начал перл и изучал вещи. Большое спасибо за поддержку! :) –