Старый 26.02.2013, 21:32   #51
Re9ent
 
Регистрация: 16.01.2012
Сообщений: 18
Репутация: 1
По умолчанию

Прошу прощения за нубский вопрос. Срочно потребовалось закодить несложный gui под perl-скрипт. Целевая система - Ubuntu. Может кто-нибудь меня сориентировать какую технологию/модуль графической оболочки выбрать?

P.S. Под Windows пробовал Tkx - работает, под Ubuntu - напрочь отказывается. Спасибо.
Re9ent вне форума   Ответить с цитированием
Старый 26.02.2013, 21:52   #52
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 352
Репутация: 105
По умолчанию

Ну так как линукс то напрашивается само GTK http://ru.wikipedia.org/wiki/Gtk2-perl по моему скоромному мнению, т.к. в Перле я не бум-бум)
b3 вне форума   Ответить с цитированием
Старый 28.03.2013, 12:38   #53
Re9ent
 
Регистрация: 16.01.2012
Сообщений: 18
Репутация: 1
По умолчанию

Всем привет!
В системе работают 2 скрипта: a.pl периодически записывает в файл info.txt данные, а скрипт b.pl по таймеру эти данные из файла считывает. Проблема в том, что b.pl после 1го чтения info.txt перестаёт считывать новые данные, хотя a.pl исправно их добавляет.
Читал на каком-то форуме, что проблему может решить функция flush. Но, если это так, признаться, не понимаю как её правильно использовать.
Помогите пожалуйста советом. Спасибо.

А. Уже не надо. Разобрался!

Последний раз редактировалось Re9ent; 28.03.2013 в 14:19..
Re9ent вне форума   Ответить с цитированием
Старый 29.03.2013, 00:25   #54
3t3st3r
 
Аватар для 3t3st3r
 
Регистрация: 16.11.2011
Сообщений: 9
Репутация: 0
По умолчанию

все верно, перл буферезирует потоки работы с файлами, т.е. он не пишет каждое изменение сразу в файл, а ждет пока накопится достаточно данных для записи. Чтобы явно намекнуть ему писать каждое изменение надо отключить буферезацию вывода, делается это следующей коммандой:
$| = 1;
или
use IO::Handle;
$fh->autoflush;
3t3st3r вне форума   Ответить с цитированием
Старый 10.10.2013, 12:59   #55
terra
 
Регистрация: 03.10.2013
Сообщений: 3
Репутация: 0
По умолчанию

Есть многопоточная программа,в ней какой-то участок кода плохо реализован, ставлю выше 4 потоков и она "падает".
Чем проанализировать можно?
terra вне форума   Ответить с цитированием
Старый 14.10.2013, 21:03   #56
3t3st3r
 
Аватар для 3t3st3r
 
Регистрация: 16.11.2011
Сообщений: 9
Репутация: 0
По умолчанию

специфика перла в том, что он использует все доступные ресурсы системы, те если программа не достаточно оптимизирована для конкретной задачи, то железо просто не потянет на каком-то кол-ве чаилдов, тк скрипт просто будет вытягивать все соки на каждый поток.
3t3st3r вне форума   Ответить с цитированием
Старый 24.11.2013, 12:21   #57
m0nzt3r
 
Регистрация: 29.08.2010
Сообщений: 14
Репутация: 0
По умолчанию

Товарищи кодеры, вопрос.
Есть список из тысячи буквонаборов длинною в 16 букв каждая (далее "база"). Есть буквонаборы, которые я введу, и они могут не совпасть с базой на 100%. Так вот, как можно реализовать, чтобы скрипт выбрал самый подходящий вариант из базы? Спасибо
m0nzt3r вне форума   Ответить с цитированием
Старый 28.11.2013, 00:28   #58
lefty
 
Аватар для lefty
 
Регистрация: 01.09.2011
Сообщений: 50
Репутация: 13
По умолчанию

m0nzt3r
ru.wikipedia.org/wiki/Расстояние_Хэмминга

конкретную реализацию алго уже сам найди.
lefty вне форума   Ответить с цитированием
Старый 30.05.2014, 13:15   #59
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Вобшем юзаю http://perldoc.perl.org/threads.html на окнах.
Ставил Active Perl и Strawberry Perl и проблему не решил.

Код:
...
# open file
open(FILE,$f) or die("error $!");

# numbers of threads
$numbers_threads = 3;
# for join all threads
$t_join = 0;

# read file per row
while (<FILE>) {  	
	# create some thread
	threads->create({'context' => 'list'},'thread_routine',$_);	
		    
	# and of file or join all threads
	if (eof FILE || $t_join == $numbers_threads) {
		$t_join = 0;	
	
		my @trl = threads->list;
		foreach(@trl){		
			# retrieve list results from thread			
			($host,$ver) = $_->join();			
			undef $_;			
			# save version in file
			if (defined($host) && defined($ver)) {
				if (substr($ver,0,1) eq '2') {			
					open(FILE2,'>>res.txt') or die("error $!");			
					print FILE2 $host . ' - ' . $ver . "\n";
					close(FILE2);
				}
			}
		}		
		undef @trl;
	}
	
	$t_join += 1;
}
close(FILE);
...
Иногда вылетает и пишет "out of memory".

Код:
threads->create({'context' => 'list'},'thread_routine',$_);
threads->create - создаю поток для распараллеливания
{'context' => 'list'} - список будет возвращать thread_routine(моя функция!), возвращает массив из двух элементов.
$_ - некоторая ссылка, которую использует функция thread_routine.

Код:
if (eof FILE || $t_join == $numbers_threads)
когда конец файла с которого считываются данные или создано нужное мне количество потоков

Код:
($host,$ver) = $_->join();
с массива, который возвращает join() некоторого потока заполняю переменные списка, чтоб в будущем записать их в файл, join() добавляет дочерний поток к главному, в это время главный ждет завершения дочернего и так на все потоки...

Как решить проблему с памятью)?

ps
1) если проблему решить, то готовый пример многопочного чекера\сканера версии на перле, только под себя заточить функцию thread_routine с нужной регулярой под себя.
2) однопочный есть, но хочется скорости)

Последний раз редактировалось }{оттабыч; 30.05.2014 в 13:53..
}{оттабыч вне форума   Ответить с цитированием
Старый 27.06.2014, 00:14   #60
devv
 
Регистрация: 08.10.2012
Сообщений: 27
Репутация: -4
По умолчанию

Кому не сложно, подскажите, есть ли аналог php функции virtual(); на перле? Чтобы сделать тоже самое, подключить в перловый скрипт таким образом свой php сценарий, и если есть, небольшой пример работы.
devv вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot