0
use Net::Google::Calendar;
my $cal = Net::Google::Calendar->new;
$cal->login(...);

 my $c;
 for ($cal->get_calendars) {
    $c = $_ if ($_->title eq 'Custom');
 }
 $cal->set_calendar($c);

 for my $event ($cal->get_events) {
    print "<pre>" . $event->title . " ". Dumper($event->when) ." </pre>";
 }

タイトルは正常に返されますが、日付で必要なイベントを除外することを期待して、日付も必要です(そのアカウントのカレンダーの場合と同様に、このモジュールはとにかくより高度な方法をサポートしているとは思いません)。印刷された結果が示すように、そこには間違いなく何かがあります:

VAR1 = bless(
    {
        'local_rd_secs' => 0,
        'local_rd_days' => 734733,
        'rd_nanosecs'   => 0,
        'locale'        => bless(
            {
                'default_time_format_length' => 'medium',
                'native_territory'           => 'United States',
                'native_language'            => 'English',
                'native_complete_name'       => 'English United States',
                'en_language'                => 'English',
                'id'                         => 'en_US',
                'default_date_format_length' => 'medium',
                'en_complete_name'           => 'English United States',
                'en_territory'               => 'United States'
            },
            'DateTime::Locale::en_US'
        ),
        'local_c' => {
            'hour'           => 0,
            'second'         => 0,
            'month'          => 8,
            'quarter'        => 3,
            'day_of_year'    => 231,
            'day_of_quarter' => 49,
            'minute'         => 0,
            'day'            => 18,
            'day_of_week'    => 6,
            'year'           => 2012
        },
        'utc_rd_secs'     => 0,
        'formatter'       => undef,
        'tz'              => bless( { 'name' => 'UTC' }, 'DateTime::TimeZone::UTC' ),
        'utc_year'        => 2013,
        'utc_rd_days'     => 734733,
        'offset_modifier' => 0
    },
    'DateTime'
);

'DateTime'は示唆に富むものですが$event->when->day、DateTime Can't call method "day" without a package or object referenceによると、Perlの使用に愚かであると私は思います。返された日付オブジェクト(またはそれが何であれ)を使用して、日付を直接読み取ったり、人間が読めるようにしたりするにはどうすればよいですか?

4

2 に答える 2

4

私はモジュールを使ったことがありませんが、そのドキュメントを閲覧すると、気づきました

when [<start> <end> [allday]]

..。

開始と終了を表す2つのDateTimeオブジェクトと、それが終日のイベントであるかどうかを示すフラグを返します。

だから、あなたはのようなものを試すことができます( $event->when )[0]->day

于 2012-08-22T14:25:46.550 に答える
2

ref($event)イベントのパッケージがであることがわかりますNet::Google::Calendar::Entry。そのドキュメントは問題を示しています:

when [<start> <end> [allday]]
...
    Returns two DateTime objects depicting the start and end and a flag
    noting whether it's an all day event.

それをData::Dumper両方のDateTimeオブジェクトに渡すと、Dumperの引数になります。toの2番目のパラメーターDumperは通常、etcの代わりに出力で使用する変数名として使用される配列参照です$VAR1が、終了日はundef Data::Dumperデフォルト値を使用します。

明らかに、配列$event->when->dayを呼び出そうとしているので、実行しようとすると状況は異なります。day

于 2012-08-22T14:30:42.750 に答える