Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
K (aka Q, KDB, KX) bindings for Perl
Perl C
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
t
.gitignore
Changes
K.xs
MANIFEST.SKIP
Makefile.PL
README.pod
kparse.c
kparse.h
perl_math_int64.c
perl_math_int64.h
typemap

README.pod

NAME

K - Perl bindings for k (aka q, aka kdb, aka kx)

SYNOPSIS

    my $k = K->new(
        host     => 'kserver.example.com',
        port     => 5000,
        user     => 'awhitney',
        password => 'kdb4eva',
        timeout  => 1000,
    );

    $k->cmd( '4 + 4' );                         # 8
    $k->cmd( q/"abc"/ );                        # ['a', 'b', 'c']
    $k->cmd( q/`foo`bar!(1;2)/ );               # { foo => 1, bar => 2 }
    $k->cmd( q/2012.03.24D12:13:14.15161728/ ); # 385906394151617280

    # table
    $k->cmd( q/([] foo: (`a;`b); bar: (`c;`d))/ );
    # {
    #   foo => ['a', 'b'],
    #   bar => ['c', 'd'],
    # }

    # table w/ primary key
    $k->cmd( q/([p: (`a;`b)] foo: (`b;`c); bar: (`d;`e))/ );
    # {
    #   p   => ['a', 'b'],
    #   foo => ['b', 'c'],
    #   bar => ['d', 'e'],
    # },

    # execute a command asynchronously
    $k->async_cmd( q/.u.upd[`t; (`foo; 2012.03.27D13:14:15.161718; 1.23)]/ );

    # receive incoming message
    my $msg = $k->recv;

DESCRIPTION

Connect to a remote K or Q instance. Execute commands. Read replies.

K wraps the C library defined by k.h and described here http://code.kx.com/wiki/Cookbook/InterfacingWithC .

K's OO interface is a thin layer of sugar on top of K::Raw which mimics the C library as faithfully as possible.

K returns simple Perl representations of k values. For example, inside k timestamps are 64-bit ints where the value is the number of nanoseconds since 2000.01.01D00:00:00.000 . For such values, K returns the int value (ex: 385906394151617280).

METHODS

new

The constructor takes the following optional arguments:

host (default: 'localhost')
port (default: '5000')
user (default: undef)
password (default: undef)
timeout (default: undef)

If a timeout is given then K will throw an exception if it's unable to connect in the provided number of milliseconds.

cmd

Takes a string containing a q command and executes it synchronously on the remote q instance. Returns the perlified result of the command.

async_cmd

Takes a string containing a q command and executes it asynchronously on the remote q instance.

recv

Listens for a message from the remote q instance. When a message arrives it's returned.

32-bit Perl

Several K datatypes are repesented as longs (64-bit ints). These include timestamps, timespans, and actual longs. Such values become native Perl ints if your Perl supports 64-bit ints. If your Perl doesn't support native 64-bit ints then K longs are represented as Math::Int64 objects. This should be transparent but there may be performance or other implications. The author of this module tests almost exclusively with a 64-bit Perl.

SEE ALSO

K::Raw, Kx, http://kx.com

REPOSITORY

http://github.com/wjackson/k-perl

AUTHORS

Whitney Jackson <whitney@cpan.org>

COPYRIGHT & LICENSE

    Copyright (c) 2011 Whitney Jackson. All rights reserved This program is
    free software; you can redistribute it and/or modify it under the same
    terms as Perl itself.
Something went wrong with that request. Please try again.