# phpman > perldoc > semop

    semop KEY,OPSTRING
            Calls the System V IPC function [semop(2)](https://www.chedong.com/phpMan.php/man/semop/2/markdown) for semaphore
            operations such as signalling and waiting. OPSTRING must be a
            packed array of semop structures. Each semop structure can be
            generated with "pack("s!3", $semnum, $semop, $semflag)". The
            length of OPSTRING implies the number of semaphore operations.
            Returns true if successful, false on error. As an example, the
            following code waits on semaphore $semnum of semaphore id
            $semid:

                my $semop = pack("s!3", $semnum, -1, 0);
                die "Semaphore trouble: $!\n" unless semop($semid, $semop);

            To signal the semaphore, replace -1 with 1. See also "SysV IPC"
            in perlipc and the documentation for "[IPC::SysV](https://www.chedong.com/phpMan.php/perldoc/IPC%3A%3ASysV/markdown)" and
            "[IPC::Semaphore](https://www.chedong.com/phpMan.php/perldoc/IPC%3A%3ASemaphore/markdown)".

            Portability issues: "semop" in perlport.

