Это звучит как домашнее задание. Вы можете использовать это как отправную точку:
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))
Итак, оставшиеся для вас задачи:
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 ) Звучит как забавное начальное задание, наслаждайтесь!
Встроенный 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/) ;
}
Это не то, для чего Runtime.exec ()?
Runtime.getRuntime().exec("/usr/bin/perl myPerl.pl");
Или я неправильно понимаю вопрос?
Я использовал Встроенный:: Java немного, и найденный им немного трудный, если бы у меня было свое время, я, вероятно, повторно реализовал бы веб-сервисы использования и звонил бы, жемчуг кодируют тот путь.
Я нашел реализацию на JavaWorld Robert Lawson, который использует XML-RPC для вызова стандартных программ Perl из кода Java: Назовите стандартные программы Perl от Java
Я не знаю, как стабильный будет это быть, или как хорошо сохраняемый это, таким образом, другая опция состояла бы в том, чтобы записать сценарий, который делает что-то, что Ваше приложение будет нужно и затем выполнит тот сценарий от Java. Не самый изящный путь, но это работает.
Sleep - это язык сценариев с интерпретатором, который запускается в JVM. Насколько я понимаю, язык Sleep - это в основном Perl с некоторыми расширениями. Ваш код может работать в спящем режиме. Если это так, вы можете создать экземпляр интерпретатора, запустить код и получить результат.