Считыаю из директории файлы; надо из их названий вытащить, за какое они число.
$file1 = sbb_ostdepdat_##_##.txt (# - цифра; соответственно сначала день, потом месяц. буквенная часть у всех одинаковая).
Пытаюсь теперь эти самые цифирки выловить и форматнуть в дату с помощью
$file1 = ~s?(\d{2})_(\d{2})?$1/$2?gi;
Получаю $file1 = 4294967295 (одинаковое для всех файлов)
Должно быть $file1 = "19/04"Вместо "/" пытался вставлять точку "\." - аналогичный результат
А в чём фокус?
Заранее спасибо
>Считыаю из директории файлы; надо из их названий вытащить, за какое они
>число.
>$file1 = sbb_ostdepdat_##_##.txt (# - цифра; соответственно сначала день, потом месяц. буквенная
>часть у всех одинаковая).
>Пытаюсь теперь эти самые цифирки выловить и форматнуть в дату с помощью
>
> $file1 = ~s?(\d{2})_(\d{2})?$1/$2?gi;
>Получаю $file1 = 4294967295 (одинаковое для всех файлов)
>Должно быть $file1 = "19/04"
>
>Вместо "/" пытался вставлять точку "\." - аналогичный результат
>
>А в чём фокус?
>
>Заранее спасибо
надо подробнее скрипт выкладывать...
$file1 = 'xxxx_15_04.txt';
$file1 =~ s/^.+(\d{2})_(\d{2})\.txt$/$1\/$2\/;
#$file1 = '15/04';
>надо подробнее скрипт выкладывать...
#!c:/perl/bin/perlchdir('c:/WordRep/');
opendir(DIR, 'c:/WordRep/Deposits_Analiz');
@tmp = readdir(DIR);
foreach $fl (@tmp)
{
if ($fl=~/ostdepdat_\d/gi) #тут я особо не напрягаюсь, ибо других файлов почти нету...
{
@filez = (@filez, $fl);
}
}
>$file1 = 'xxxx_15_04.txt';
>$file1 =~ s/^.+(\d{2})_(\d{2})\.txt$/$1\/$2\/;
>#$file1 = '15/04';
У меня было - $file1 = ~s?(\d{2})_(\d{2})?$1/$2?gi; в чём разница? Я же забабахал g - так что можно не париться и вбивать всю строку... И не лишний ли у тебя "\"?
За ответ спасибо - только вот меня интересовало, что у меня нетак (типа на будущее)... В конце-концов просто substr два раза забабахнул =)))
>>надо подробнее скрипт выкладывать...
>#!c:/perl/bin/perl
>
>chdir('c:/WordRep/');
>opendir(DIR, 'c:/WordRep/Deposits_Analiz');
>@tmp = readdir(DIR);
>foreach $fl (@tmp)
> {
> if ($fl=~/ostdepdat_\d/gi) #тут я особо не напрягаюсь, ибо других файлов почти
>нету...
> {
unshift (@filez, $fl);
$fl=~s/^.+(\d{2})_(\d{2})\.txt$/$1\/$2/;
unshift (@file2,$fl);
> }
> }
В массиве file2 будут \d\d/\d\d :)>>$file1 = 'xxxx_15_04.txt';
>>$file1 =~ s/^.+(\d{2})_(\d{2})\.txt$/$1\/$2\/;
>>#$file1 = '15/04';
>У меня было - $file1 = ~s?(\d{2})_(\d{2})?$1/$2?gi; в чём разница? Я же
>забабахал g - так что можно не париться и вбивать всю
>строку...
1.'g' - здесь не нужен (это только для повторяющихся элементов)
'xxxx_15_04.txt' ==> s/(\d{2})_(\d{2})/$1\/$2/g ====> xxxx_15/04.txtИ не лишний ли у тебя "\"?
лишний. надо $1\/$2/;
ты не выдал где ты производишь замену...
>За ответ спасибо - только вот меня интересовало, что у меня нетак
>(типа на будущее)... В конце-концов просто substr два раза забабахнул =)))
>