我是perl的新手,但對我的第一個腳本有一些成功。 我想使用模塊「vCard」。perl模塊vCard
好的,根據要求, 完整的腳本+文件+輸出。
#!/usr/bin/perl
use strict;
use warnings;
use Text::vCard::Node;
use Text::vCard;
use Text::vFile;
use vCard;
use Glib;
use Gtk2 '-init';
use Getopt::Long;
# _ __ _ _ _
# \ // (_) | | | |
# \ \//_ _ _ __ _ __ _| |__ | | ___
# \ \//_` | '__| |/ _` | '_ \| |/ _ \
# \/(_| | | | | (_| | |_) | | __/
# \/ \__,_|_| |_|\__,_|_.__/|_|\___|
#
#
### variables block
my $self='';
my $av_std_VERSION;
my $av_loc_FILENAME;
my $av_loc_VCARD;
my $av_ADDRESSES;
my $av_NODES;
my $tmp_av_STRING;
my $tmp_av_FN;
my $tmp_av_FILE;
my $tmp_av_RETURN;
# option parameters
my $av_pospar_DEBUG='';
my $av_pospar_VERBOSE='';
my $av_pospar_LOGGING='';
my $av_pospar_TEST='';
my $av_pospar_VERSION='';
#dialogelemente
my $av_WINDOW;
my $av_BUTTON;
my $av_HBOX;
my $av_VBOX;
my $av_TEXTBOX1;
my $av_LABEL1;
#filehandler
my $fh_av_VCARD;
# ______ _ _
# ____| | | (_)
# |__ _ _ _ __ ___| |_ _ ___ _ __ ___
# __| | | | '_ \/__| __| |/ _ \| '_ \/ __|
# | | |_| | | | | (__| |_| | (_) | | | \__ \
# _| \__,_|_| |_|\___|\__|_|\___/|_| |_|___/
#
#
### functions commands block
sub schluss
{
Gtk2->main_quit();
exit (0);
}
sub auswertung
{
$tmp_av_STRING = $av_TEXTBOX1->get_text();
Gtk2->main_quit();
}
sub av_help
{
print "Benutzung:\n";
print "xxx.pl [-d, --debug] [-f, --file <filename>] [-h, --help] [-t, --test] [-v, --verbose] [-V, --version]\n";
print "Bedeutung der Optionen:\n";
print "-d, --debug := debug on\n";
print "-f, --file := dateiname einer existierenden .vcf-datei deren Werte eingelesen werden sollen\n";
print "-h, --help := diese Information\n";
print "-l, --logging := log all output to file in /var/userlog/\n";
print "-t, --test := test mode on\n";
print "-v, --verbose, -d, --debug := verbose on + debug on\n";
print "-V, --version := Version wird ausgegeben\n";
}
# _____ _ _
# __ \ | | (_)
# |__) | __ ___ _ __ __ _ _ __ __ _| |_ _ ___ _ __
# ___/ '__/ _ \ '_ \/_` | '__/ _` | __| |/ _ \| '_ \
# | | | | __/ |_) | (_| | | | (_| | |_| | (_) | | | |
# _| |_| \___| .__/ \__,_|_| \__,_|\__|_|\___/|_| |_|
# | |
# |_|
### preparation commands block
GetOptions ("d" => \$av_pospar_DEBUG, # debug
"debug" => \$av_pospar_DEBUG, # debug
"h" => \&av_help, # help
"help" => \&av_help, # help
"f=s" => \$av_loc_FILENAME, # file
"file=s" => \$av_loc_FILENAME, # file
"l" => \$av_pospar_LOGGING, # logging
"logging" => \$av_pospar_LOGGING, # logging
"t" => \$av_pospar_TEST, # test
"test" => \$av_pospar_TEST, # test
"v" => \$av_pospar_VERBOSE, # verbose
"verbose" => \$av_pospar_VERBOSE, # verbose
# "V" => \$av_pospar_VERSION, # version
"version" => \$av_pospar_VERSION) # version
or die("Error in command line arguments\n");
print "debug: $av_pospar_DEBUG\n";
print "file: $av_loc_FILENAME\n";
print "logging: $av_pospar_LOGGING\n";
print "test: $av_pospar_TEST\n";
print "verbose: $av_pospar_VERBOSE\n";
print "version: $av_pospar_VERSION\n";
print "alle optionen: @ARGV\n";
# __ __ _ _____
# \/ | (_) | __ \
# \/| __ _ _ _ __ | |__) | __ ___ ___
# |\/| |/ _` | | '_ \ | ___/ '__/ _ \/__|
# | | | (_| | | | | | | | | | | (_) | (__ _
# _| |_|\__,_|_|_| |_| |_| |_| \___/ \___(_)
#
#
### main procedure
$av_loc_VCARD = vCard->new;
$av_loc_VCARD->load_file($av_loc_FILENAME);
print "return: $!\n";
$tmp_av_STRING = $av_loc_VCARD->as_string;
print "$tmp_av_STRING\n";
# ______ _ _____
# | ____| | | | __ \
# | |__ _ __ __| | | |__) | __ ___ ___
# | __| | '_ \/_` | | ___/ '__/ _ \/__|
# | |____| | | | (_| | | | | | | (_) | (__ _
# |______|_| |_|\__,_| |_| |_| \___/ \___(_)
#
#
### end procedure
exit (0);
這裏你可以找到使用的電子名片:
BEGIN:VCARD
VERSION:3.0
N;LANGUAGE=de:mySurname;myFirstname
FN:myFirstname mySurname
ORG:myCompany GmbH
TEL;TYPE=work:+49 (0000) 123456
ADR;TYPE=work:;;Strasse 1;Ortschaft arbeit;;56789;Deutschland
ADR;TYPE=home;PREF:;;Privatstrasse 17;Privatortschaft;;00111;Deutschland
EMAIL:[email protected]
URL:www.a.de
END:VCARD
這就是輸出:
./av_perl_10.pl -v -f test_input.vcf
debug:
file: test_input.vcf
logging:
test:
verbose: 1
version:
alle optionen:
return:
BEGIN:VCARD
VERSION:4.0
END:VCARD
這就是我的全部
問候 卡爾 - 海因茨·
請向我們展示整個程序,而不僅僅是您認爲相關的部分。你有''嚴格使用''和'使用警告;'在代碼的頂部?另外,我沒有在輸出中看到它打印返回碼。 –
我無法重現您的錯誤。我得到這個:'BEGIN VCARD沒有匹配END'。你發佈了你的實際vcf文件嗎? – toolic
我無法使用Text :: vCard甚至通過CPAN進行安裝,而無法獲得'BEGIN VCARD而沒有匹配END'錯誤。在Windows 8.1中使用ActivePerl 5.16(64位)。活動狀態的PPM安裝OK,但它不包括似乎是CPAN模塊一部分的所有文件。基本模塊可能有問題... – jimtut