Как я могу назвать Perl от Java?

Это звучит как домашнее задание. Вы можете использовать это как отправную точку:

input = """s.no   value    date
0      55       04/12/18
1      90       04/12/18 
2      85       04/12/18
3      71       04/12/18
4      53       04/12/18
5      89       05/12/18
6      76       05/12/18
7      69       05/12/18
8      58       05/12/18
9      75       06/12/18
"""

value_start_pos = 8 - 1
date_start_pos = 17 - 1

for line in input.splitlines():
    sno = line[:value_start_pos].rstrip()
    value = line[value_start_pos:date_start_pos].rstrip()
    date = line[date_start_pos:].rstrip()

    print("sno: {}".format(sno))
    print("Date: {}".format(date))
    print("Value: {}".format(value))

Итак, оставшиеся для вас задачи:

  1. Пропустить строку заголовка (это добавление 4 символов к приведенному выше)
  2. Разобрать даты для сравнения (требуется один импорт + вызов)
  3. Отфильтровать даты, которые не соответствуют критериям (использовать тот же импорт, что и выше)
  4. Отформатировать вывод данные (см. Aligning the text and specifying a width: в https://docs.python.org/3.7/library/string.html#format-string-syntax или для Python 2: https: // docs). .python.org / 2 / library / string.html # format-string-syntax )

Звучит как забавное начальное задание, наслаждайтесь!

15
задан brian d foy 8 November 2008 в 21:08
поделиться

6 ответов

Встроенный Java является обычной библиотекой для вызова Java от Perl, и это сообщение предлагает org.perl.java модуль, который должен позволить называть Perl от Java, как спросили.

Однако из-за непредсказуемости реализаций JNI для другого JVMs трудно сказать, какие комбинации JVM и Perl будут работать. Как правило, то, что требуется, является Perl с КРАТНОСТЬЮ и распараллеливает скомпилированный в. Это означает, что он использует сделанный на заказ Perl.

Иначе, Встроенный:: Java:: Обратный вызов позволяет Вам вызывать функции Perl от Java. Чтобы сделать это, необходимо создать org.perl.inline.java.InlinePerlCaller объект. Вот пример типичного использования:

use Inline Java => <<END ;
import java.util.* ;
import org.perl.inline.java.* ;

class Pod_regexp extends InlineJavaPerlCaller {
    public Pod_regexp() throws InlineJavaException {
    }

    public boolean match(String target, String pattern)
        throws InlineJavaException {
        try {
            String m = (String)CallPerlSub("main::regexp",
            new Object [] {target, pattern}) ;

            if (m.equals("1")){
            return true ;
        }
    }
    catch (InlineJavaPerlException pe){
        // $@ is in pe.GetObject()
    }

    return false ;
    }
}
END

my $re = new Pod_regexp() ;
my $match = $re->match("Inline::Java", "^Inline") ;
print($match . "n") ; # prints 1

sub regexp {
    my $target = shift ;
    my $pattern = shift ;

    return ($target =~ /$pattern/) ;
} 
17
ответ дан 1 December 2019 в 02:56
поделиться

Это не то, для чего Runtime.exec ()?

Runtime.getRuntime().exec("/usr/bin/perl myPerl.pl");

Или я неправильно понимаю вопрос?

6
ответ дан 1 December 2019 в 02:56
поделиться

Я использовал Встроенный:: Java немного, и найденный им немного трудный, если бы у меня было свое время, я, вероятно, повторно реализовал бы веб-сервисы использования и звонил бы, жемчуг кодируют тот путь.

1
ответ дан 1 December 2019 в 02:56
поделиться

Я нашел реализацию на JavaWorld Robert Lawson, который использует XML-RPC для вызова стандартных программ Perl из кода Java: Назовите стандартные программы Perl от Java

0
ответ дан 1 December 2019 в 02:56
поделиться

Я не знаю, как стабильный будет это быть, или как хорошо сохраняемый это, таким образом, другая опция состояла бы в том, чтобы записать сценарий, который делает что-то, что Ваше приложение будет нужно и затем выполнит тот сценарий от Java. Не самый изящный путь, но это работает.

-1
ответ дан 1 December 2019 в 02:56
поделиться

Sleep - это язык сценариев с интерпретатором, который запускается в JVM. Насколько я понимаю, язык Sleep - это в основном Perl с некоторыми расширениями. Ваш код может работать в спящем режиме. Если это так, вы можете создать экземпляр интерпретатора, запустить код и получить результат.

1
ответ дан 1 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: