Я обычно использую сценарии SQL для заполнения данных в сценарии, который Вы обсуждаете.
Это просто и очень легко повторяемо.
В perlfaq3 перечислен ряд параметров, а также некоторые дополнительные, которых нет. Я знаком только с интерфейсами, основанными на Tk.
Perl / Tk имеет самый "перлишний" интерфейс, но не имеет ' t был обновлен, чтобы воспользоваться преимуществами поддержки плитки (нативный / тематический виджет) в текущей версии Tk (и, вероятно, никогда не будет). Tkx использует мост, отличный от Tk. Он позволяет получить доступ ко всему в Tk (и это тоже быстрее), но синтаксис менее изящный. Tkx разработан как тонкая оболочка над Tk; вам придется обращаться к документации Tk по большинству вопросов и переводить для использования с Perl. Модуль Tcl / Tk использует тот же мост, что и Tkx, но поддерживает синтаксис, в основном такой же, как у Perl / Tk.
Нужно ли вам что-либо компилировать, зависит от того, какую версию Perl вы используете. Если вы используете Strawberry Perl, вам, вероятно, придется что-то компилировать, независимо от того, какой инструментарий вы выберете. Дистрибутивы ActivePerl включают Tkx где-то в цикле 5.8.x и перестали связывать Tk с 5.10, хотя он все еще доступен через PPM. Tcl / Tk доступен из CPAN, но мне не удалось заставить его работать с библиотекой Tk, которая поставляется вместе с ActivePerl; вам может потребоваться установить Tcl отдельно, чтобы использовать его.
Лично я использовал Perl / Tk, но теперь использую Tkx.
Что касается «жёсткости» интерфейса, я бы предложил старый добрый Tk . К сожалению, он выглядит довольно устаревшим и не похожим на win32.
Если вам нужны нативные виджеты, я думаю, ваши лучшие снимки будут использовать нативный графический интерфейс Windows через Win32 :: GUI или Wx . У меня нет опыта работы с Win32 :: GUI, но Wx довольно хорош. Тем не менее, у него довольно крутая кривая обучения, а интерфейс не очень "изящный". Корни C ++ немного видны (к лучшему или к худшему).
Есть несколько Tk-замен, которые на самом деле являются тонкими оболочками для Tcl / Tk (я думаю, Tcl :: Tk и Tkx). Они выглядят более современно, чем Perl / Tk, но у меня тоже нет практического опыта работы с ними. Если вы разрабатываете только для Windows, взгляните на ActivePerl, который поставляется с (я думаю) Tkx. Их менеджер пакетов ppm4 написан с его использованием и выглядит довольно красиво!
Хотя Tk и Qt также доступны (более общие фреймворки, изначально предназначенные для других языков, на которых вы также можете использовать Perl), и Tk, вероятно, наиболее популярен, поскольку он существует дольше всего, Win32 :: GUI , кажется, лучше всего отвечает вашим требованиям. Если вам нравятся дизайнеры графического интерфейса WISIWYG, вы можете использовать Loft поверх Win32 :: GUI, но вам не нужно этого делать, если вы предпочитаете делать все программно.
Я бы сам придерживался ТК. Он работает в Windows , и вы его уже знаете.
Я бы выбрал GTK, потому что в нем есть учебное пособие (на данный момент я использую Wx, и есть много доступного исходного кода на Perl, использующего Wx, но не официальная документация ... кроме некоторых статей, поэтому нет книги ... никаких официальных материалов), если не Qt, тоже вариант, и у него есть соответствующая документация (но я не пробовал).
У Tk очень большие проблемы, и я не буду его использовать.
Что касается ваших проблем с производительностью ... Я почти уверен, что ни одно достойное приложение не будет беспокоиться, если оно отображает 100000 или 10 ^ 100 файлов, поскольку очень немногие подходят тебе экран, чтобы вы могли обрезать .
Если нужно просто получить простой графический интерфейс поверх ваших сценариев, то самый простой путь - VB.NET (или C #). Это то, что я делаю.
С дизайнером Visual Studio это просто вопрос разработки формы, дважды щелкните кнопку, которая запустит обработку, добавьте код для считывания параметров из элементов графического интерфейса (например, пути к файлам в TextBox 'es) и передайте информацию в сценарий через переменные среды или параметры командной строки.
Пример из одного из моих приложений (используется реальными пользователями):
Dim inputFolder As String = txtInputDataMGFfolder.Text
Dim outputFile As String = txtOutputMGFfile.Text
Dim ws As WshShellClass = New WshShellClass
Dim objEnviron2 As IWshRuntimeLibrary.IWshEnvironment = _
ws.Environment("PROCESS")
objEnviron2.Item("INDIR") = inputFolder
objEnviron2.Item("OUTFILE") = outputFile
'It may or may not help for this: the user dialogs for selecting
'files may change the current directory and running the Perl
'script or one of the .pm files would fail.
ws.CurrentDirectory = appPath()
ws.Run("%COMSPEC% /K perl -w MultRawPrepare.pl", 1, False)
Обратите внимание, что использование Windows Script Host для этого может не быть строго необходимым, но если это тогда это необходимо:
'Requires adding reference to project:
' menu Project/Add Reference/COM/Windows Script Host Object Model
' Note: "Windows", not "Microsoft".
'
'Note: the DLL may not be registered;
' D:
' cd \WINNT\system32
' regsvr32 wshom.ocx
Imports IWshRuntimeLibrary 'For WshShellClass.
appPath () определяется следующим образом (и требует "Imports System.Reflection" в начале файла VB.NET):
Public Shared Function appPath() As String
'"[Assembly]" requires System.Reflection
Dim strAppDir As String = _
Path.GetDirectoryName( _
[Assembly].GetExecutingAssembly().GetModules(False)(0).FullyQualifiedName)
Return strAppDir
End Function 'appPath
Пользовательский выбор файлов или папок легко добавить, но этому помогают инструкции HOW-TO и немного стандартного кода.
Экспресс-версия Visual Studio для VB.NET бесплатна.
Бесстыдный плагин - я нахожусь в процессе написания чистого инструментария Perl GUI, XUL :: Gui , который отображает свой GUI с помощью Firefox. Он позволяет вам делать все, что может Firefox (XUL, HTML, JavaScript, Flash, другие веб-технологии). Firefox использует собственный внешний вид ОС (или любую другую тему, которую вы хотите) и доступен для большинства платформ.
use XUL::Gui;
display Window title=>'My Application',
Button( label=>'click me', oncommand=>sub{ shift->label = 'ouch'} );
В настоящее время он находится в стадии разработки, но, вероятно, достаточно стабилен для начала работы. Идея состоит в том, чтобы быть как можно более простым и актуальным. Почти все шаблоны являются необязательными с разумными значениями по умолчанию. Например, тег Window нужен только потому, что я хотел присвоить окну заголовок.
Модуль установлен на CPAN . Я рекомендую всем взглянуть и присылать мне запросы функций или отчеты об ошибках.