LINUX.ORG.RU

perl строка

 


0

1

есть строки, НЕ числа

$a1="ф150"
$a2="150"
$a3="6521"
$a4="12я456"
что нужно получить
$a1="00ф150"
$a2="000150"
$a3="006521"
$a4="12я456"
то есть добавить спереди 0 (нули) и получить шесть разрядов так сказать на perl

★★

Ответ на: комментарий от AITap
150-<>-150   ---000150
1150-<>-1150   ---0001150
3150-<>-3150   ---0003150
5150-<>-5150   ---0005150
7150-<>-7150   ---0007150
43150-<>-43150   ---00043150
04м150-<>-04М150   ---00004м150
45150-<>-45150   ---00045150
42150-<>-42150   ---00042150
41150-<>-   ---00041150
0v5150-<>-   ---0000v5150
0г2150-<>-   ---0000г2150

не-то чет получилось в первой все норм а вот как быть дальше

pvvking ★★ ()
Ответ на: комментарий от pvvking

Что значат эти строки? Покажите Ваш код.

Кириллица внутри строк находится в виде байтов или в виде символов? Если в виде байтов, то в какой кодировке?

AITap ★★★★★ ()
Ответ на: комментарий от AITap
#!/usr/bin/perl
use DBI;
use encoding 'utf8';


$dbh = DBI->connect('DBI:mysql:nomen1', 'root', '******'
               ) || die "Could not connect to database: $DBI::errstr";
               # (insert query examples here...)

$dbh->do("set character set utf8");
$dbh->do("set names utf8");

print "Старт\n";

open (FIL,"1.txt");  ФАЙЛ в UTF8
while (<FIL>)
{
chomp;
($kod_m,$nai_m,$nai_m_p,$kod_u,$nai_u)=split(/;/);

$str = "0"x(3 - length $kod_).$kod_m;

print ("$kod_m-<$len_m>-$kod_u   ---$str\n" );
$dbh->do("INSERT INTO `nomen1`.`tabl` (`id`, `kod_m`, `nai_m`, `kod_u`, `nai_u`, `kod_r`, `nai_r`) VALUES (NULL, '$kod_m', '$nai_m', '$kod_u', '$nai_u', '', '');");

}
close(FIL);
$dbh->disconnect();
pvvking ★★ ()
Ответ на: комментарий от pvvking

1) Забыли use warnings; use strict;
2)

open (FIL,«1.txt»); ФАЙЛ в UTF8

А раскодировать текст из байтов в символы кто будет? Хотя бы используйте IOLayer ":utf8".
Подробнее см. документацию по модулю Encode.
3)

$str = «0"x(3 - length $kod_).$kod_m;

Переменная $kod_ не определена
4)

$dbh->do(„INSERT INTO `nomen1`.`tabl` (`id`, `kod_m`, `nai_m`, `kod_u`, `nai_u`, `kod_r`, `nai_r`) VALUES (NULL, '$kod_m', '$nai_m', '$kod_u', '$nai_u', ", ");“);

http://bobby-tables.com/
http://bobby-tables.com/perl.html
Используйте ->prepare и placeholder'ы.

AITap ★★★★★ ()
#!/usr/bin/perl

use utf8;
use strict;

my ($a1, $a2, $a3, $a4) = ("ф150", "150", "6521", "12я456");

foreach ($a1, $a2, $a3, $a4) {
        $_ = sprintf "%06s", $_;
        print "$_\n";
}
x-signal ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.