Форум — Development perl строка perl 0 1 есть строки, НЕ числа $a1="ф150" $a2="150" $a3="6521" $a4="12я456" что нужно получить $a1="00ф150" $a2="000150" $a3="006521" $a4="12я456" то есть добавить спереди 0 (нули) и получить шесть разрядов так сказать на perl Ссылка
$str = «0"x(6 - length $str).$str; AITap ★★★★★ (20.11.12 14:46:30 MSK) Последнее исправление: AITap 20.11.12 14:49:39 MSK (всего исправлений: 1) Показать ответ Ссылка
Ответ на: комментарий от AITap 20.11.12 14:46:30 MSK 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 ★★ (20.11.12 14:54:23 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от pvvking 20.11.12 14:54:23 MSK да все это в utf8 pvvking ★★ (20.11.12 14:55:01 MSK) автор топика Ссылка
Ответ на: комментарий от pvvking 20.11.12 14:54:23 MSK Что значат эти строки? Покажите Ваш код.Кириллица внутри строк находится в виде байтов или в виде символов? Если в виде байтов, то в какой кодировке? AITap ★★★★★ (20.11.12 14:56:50 MSK) Показать ответ Ссылка
Ответ на: комментарий от AITap 20.11.12 14:56:50 MSK #!/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 ★★ (20.11.12 15:00:04 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Lavos 20.11.12 15:03:35 MSK Спасибо помогло. pvvking ★★ (20.11.12 15:06:10 MSK) автор топика Ссылка
Ответ на: комментарий от pvvking 20.11.12 15:00:04 MSK 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 ★★★★★ (20.11.12 15:08:39 MSK) Ссылка
#!/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 ★★ (26.11.12 15:56:40 MSK) Ссылка